在数据帧中转置数据,每个ID有多行

时间:2015-07-27 14:40:24

标签: pandas

我有一个包含两列的数据框:id和value。每个id都显示为与唯一值一样多的行。

有两个我对记录感兴趣的值,2& 39.不是每个值都有一行,而是想创建一个包含三列的新数据帧:id,value2,value39。 value2和value39需要布尔值来指示它们是否在原始数据帧中注册。

感谢您的帮助。

编辑: 我希望每个ID都有一行数据帧。这意味着我需要将value2和value39布尔值合并为一行。

1 个答案:

答案 0 :(得分:0)

根据第一个DataFrame上的id列创建第二个DataFrame,然后创建两个列,测试该值是2还是39。

df = pd.DataFrame({'id': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 6, 6: 6},
                   'value': {0: 2, 1: 2, 2: 39, 3: 39, 4: 1, 5: 39, 6: 2}})

df2 = df[['id']]
df2['value2'] = df.value == 2
df2['value39'] = df.value == 39

EDIT:
>>> df2.groupby(['id']).any()
   value2 value39
id               
0    True   False
1    True   False
2   False    True
3   False    True
4   False   False
6    True    True