Python 基于一列将dataframe转换为dataframes字典
我有一个如下所示的数据框:Python 基于一列将dataframe转换为dataframes字典,python,pandas,dataframe,pivot-table,pandas-groupby,Python,Pandas,Dataframe,Pivot Table,Pandas Groupby,我有一个如下所示的数据框: 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列对应一个数据帧字典,并将列1中的可能值作为新列 前 并用nans填补任何空白。与
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
列对应一个数据帧字典,并将列1中的可能值作为新列
前
并用nans
填补任何空白。与以下内容一起使用:
然后在听写理解中,通过第一级多索引选择:
但也可以通过以下方式从df1
生成输出:
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
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
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