我有一个数据框,其中包含重复的 ID 号、重复的类别以及可能重复或不重复的数值。我需要一个最终的数据框,其中每一行都是一个 ID 号,其中的字段显示每个类别的值。
原始数据框:
df = pd.DataFrame({'IDNum': [1, 1, 2, 3, 3, 4], 'Category': ['a', 'b', 'a', 'c', 'b', 'b'],
'value1': [1.5, 2.2, 3.6, 5.1, 6.0, 1.0], 'value2': [2.0, 3.6, 4.5, 8.2, 6.1, 1.2]})
df
IDNum Category value1 value2
0 1 a 1.5 2.0
1 1 b 2.2 3.6
2 2 a 3.6 4.5
3 3 c 5.1 8.2
4 3 b 6.0 6.1
5 4 b 1.0 1.2
我能够创建一个数据透视表,根据需要对数据进行分组,但在创建新的列名称以相应地识别数据时,我很难将其拆开。
table = pd.pivot_table(df,
values=['value1', 'value2'],
index = 'IDNum',
columns = 'Category')
table
value1 value2
Category a b c a b c
IDNum
1 1.5 2.2 NaN 2.0 3.6 NaN
2 3.6 NaN NaN 4.5 NaN NaN
3 NaN 6.0 5.1 NaN 6.1 8.2
4 NaN 1.0 NaN NaN 1.2 NaN
我的决赛桌看起来像:
IDNum a_value1 b_value1 c_value1 a_value2 b_value2 c_value2
1 1.5 2.2 NaN 2.0 3.6 NaN
2 3.6 NaN NaN 4.5 NaN NaN
3 NaN 6.0 5.1 NaN 6.1 8.2
4 NaN 1.0 NaN NaN 1.2 NaN