gpt4 book ai didi

python - 将数据帧放入基于一列的数据帧字典中

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:49 25 4
gpt4 key购买 nike

我有一个数据框,如下所示:

df=
column1 v1 v2 ... vN
ind1 'a' 1 3
ind1 'b' 2 4
ind2 'a' 3 5
ind2 'b' 4 6
...
indN 'c' 5 7

我想将此数据帧拆分为一个数据帧字典,每个数据帧对应原始 v1..vN 列,并将 columns1 中的可能值作为新列

例如。

output['v1']=
'a' 'b' 'c'
ind1 1 2 nan
ind2 3 4 nan
indN nan nan 5
output['v2']=
'a' 'b' 'c'
ind1 3 4 nan
ind2 5 6 nan
indN nan nan 7

并用nans填补任何空白。

最佳答案

使用set_indexunstack :

df1 = df.set_index('column1', append=True).unstack()
print (df1)
v1 v2
column1 'a' 'b' 'c' 'a' 'b' 'c'
ind1 1.0 2.0 NaN 3.0 4.0 NaN
ind2 3.0 4.0 NaN 5.0 6.0 NaN
indN NaN NaN 5.0 NaN NaN 7.0

然后在字典理解中按 xsMultiIndex 第一级进行选择:

output = {x:df1.xs(x, axis=1) for x in df1.columns.levels[0]}
print (output)
{'v2': column1 'a' 'b' 'c'
ind1 3.0 4.0 NaN
ind2 5.0 6.0 NaN
indN NaN NaN 7.0, 'v1': column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0}

print (output['v1'])
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0

但也可以通过 xsdf1 生成输出不理解:

print (df1.xs('v1', axis=1))
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0
<小时/>

类似的解决方案:

df1 = df.set_index('column1', append=True)
print (df1)
v1 v2
column1
ind1 'a' 1 3
'b' 2 4
ind2 'a' 3 5
'b' 4 6
indN 'c' 5 7

output = {x:df1.unstack().xs(x, axis=1) for x in df1.columns}
print (output)
{'v2': column1 'a' 'b' 'c'
ind1 3.0 4.0 NaN
ind2 5.0 6.0 NaN
indN NaN NaN 7.0, 'v1': column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0}

print (output['v1'])
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0

关于python - 将数据帧放入基于一列的数据帧字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823986/

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