将行折叠成列 Pandas
Collapsing rows to Columns Pandas
我正在尝试折叠 pandas.Let 中的多行数据框,说数据框看起来像这样
ID Key Value Object
1001 K 1 4
1001 C 2 7
1001 D 3 9
2001 K 1 19
2001 C 2 10
现在我想将数据框折叠成以下内容:
ID Value_K Value_C Value_D Object_K Object_C Object_D
1001 1 2 3 4 7 9
2001 1 2 NA 19 10 NA
有没有好心人帮帮我。我已经尝试使用 pivot()、pivot_table()、collapse() 和 melt() 但没有取得任何结果。
谢谢
您可以使用 groupby
和 unstack
df = pd.DataFrame({'ID': [1001,1001,1001,2001,2001], 'Key': ['K', 'C', 'D', 'K', 'C'], 'Value': [1,2,3,1,2],
'Object': [4,7,9,19,10]})
df = df.groupby(['ID', 'Key']).sum().unstack()
df.columns = df.columns.map('{0[0]}-{0[1]}'.format)
df = df.reset_index()
print(df)
ID Value-C Value-D Value-K Object-C Object-D Object-K
0 1001 2.0 3.0 1.0 7.0 9.0 4.0
1 2001 2.0 NaN 1.0 10.0 NaN 19.0
我正在尝试折叠 pandas.Let 中的多行数据框,说数据框看起来像这样
ID Key Value Object
1001 K 1 4
1001 C 2 7
1001 D 3 9
2001 K 1 19
2001 C 2 10
现在我想将数据框折叠成以下内容:
ID Value_K Value_C Value_D Object_K Object_C Object_D
1001 1 2 3 4 7 9
2001 1 2 NA 19 10 NA
有没有好心人帮帮我。我已经尝试使用 pivot()、pivot_table()、collapse() 和 melt() 但没有取得任何结果。
谢谢
您可以使用 groupby
和 unstack
df = pd.DataFrame({'ID': [1001,1001,1001,2001,2001], 'Key': ['K', 'C', 'D', 'K', 'C'], 'Value': [1,2,3,1,2],
'Object': [4,7,9,19,10]})
df = df.groupby(['ID', 'Key']).sum().unstack()
df.columns = df.columns.map('{0[0]}-{0[1]}'.format)
df = df.reset_index()
print(df)
ID Value-C Value-D Value-K Object-C Object-D Object-K
0 1001 2.0 3.0 1.0 7.0 9.0 4.0
1 2001 2.0 NaN 1.0 10.0 NaN 19.0