gpt4 book ai didi

python - 如何从数据帧列字符串中提取周期和变量名称以进行多索引面板数据准备

转载 作者:行者123 更新时间:2023-12-03 23:18:26 24 4
gpt4 key购买 nike

我是 Python 新手,无法在任何地方找到我正在寻找的答案。

我有一个具有以下结构的 DataFrame:

df = pd.DataFrame(index=list('abc'), data={'A1': range(3), 'A2': range(3),'B1': range(3), 'B2': range(3), 'C1': range(3), 'C2': range(3)})
df
Out[1]:
A1 A2 B1 B2 C1 C2
a 0 0 0 0 0 0
b 1 1 1 1 1 1
c 2 2 2 2 2 2

其中数字是句点,字母是变量。我想以某种方式转换列,将句点和变量拆分为多索引。所需的输出如下所示

   A     B     C   
1 2 1 2 1 2
a 0 0 0 0 0 0
b 1 1 1 1 1 1
c 2 2 2 2 2 2

我尝试过以下方法:

periods = list(range(1, 3))
df.columns = df.columns.str.replace('\d+', '')
df.columns = pd.MultiIndex.from_product([df.columns, periods])

这似乎是将列相乘并引发 ValueError:长度不匹配

在我的数据框中,我有 72 个周期和 12 个变量。

预先感谢您的帮助!

编辑:我意识到我不够精确。我有几个列名称,例如 Impressions1、Impressions2...Impressions72 和 hhi1、hhi2...hhi72。所以 df.columns.str[0],df.columns.str[1] 对我不起作用,因为所有列名称都有不同的长度。我认为解决方案可能包含正则表达式,但我不知道该怎么做。有什么想法吗?

最佳答案

使用pd.MultiIndex.from_tuples :

df.columns = pd.MultiIndex.from_tuples(list(zip(df.columns.str[0],df.columns.str[1])))
print(df)
A B C
1 2 1 2 1 2
a 0 0 0 0 0 0
b 1 1 1 1 1 1
c 2 2 2 2 2 2

替代方案:

pd.MultiIndex.from_tuples([tuple(name) for name in df.columns])

pd.MultiIndex.from_tuples(map(tuple, df.columns))

关于python - 如何从数据帧列字符串中提取周期和变量名称以进行多索引面板数据准备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60326314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com