gpt4 book ai didi

python - 使用列名作为因子有效地转换 pandas dataFrame

转载 作者:行者123 更新时间:2023-12-01 13:40:13 42 4
gpt4 key购买 nike

我想将软件提供的 DataFrame 转换为更适合 Python 的 DataFrame,但我无法使用 pandas 以简单的方式修复它,因为我必须使用列中包含的信息。这里有一个简单的例子:

import pandas as pd
d = {'00' : [1],'01' : [11], '10': [111], '11':[1111]}
pd.DataFrame(d)

00 01 10 11
0 1 11 111 1111

列名包含我需要在行中使用的因素,我想得到这样的东西:

df = {'trt': [0,0,1,1], 'grp': [0,1,0,1], 'value':[1,11,111,1111]}
pd.DataFrame(df)

grp trt value
0 0 0 1
1 1 0 11
2 0 1 111
3 1 1 1111

关于如何正确执行它的任何想法?

最佳答案

解决方案 MultiIndex.from_arrays已创建 indexing with str并通过 T 进行转置:

df.columns = pd.MultiIndex.from_arrays([df.columns.str[0], df.columns.str[1]])
print (df)
0 1
0 1 0 1
0 1 11 111 1111

df1 = df.T.reset_index()
df1.columns = ['grp','trt','value']
print (df1)
grp trt value
0 0 0 1
1 0 1 11
2 1 0 111
3 1 1 1111

rename_axis 类似的解决方案并重命名 index:

d = {'00' : [1],'01' : [11], '10': [111], '11':[1111]}
df = pd.DataFrame(d)
df.columns = pd.MultiIndex.from_arrays([df.columns.str[0], df.columns.str[1]])
print(df.rename_axis(('grp','trt'), axis=1).rename(index={0:'value'}).T.reset_index())
grp trt value
0 0 0 1
1 0 1 11
2 1 0 111
3 1 1 1111

关于python - 使用列名作为因子有效地转换 pandas dataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933921/

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