我有一个包含两列的数据框:id和value。每个id都显示为与唯一值一样多的行。
有两个我对记录感兴趣的值,2& 39.不是每个值都有一行,而是想创建一个包含三列的新数据帧:id,value2,value39。 value2和value39需要布尔值来指示它们是否在原始数据帧中注册。
感谢您的帮助。
编辑: 我希望每个ID都有一行数据帧。这意味着我需要将value2和value39布尔值合并为一行。
答案 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