从其他列中的特定值创建熊猫数据框列

时间:2021-02-09 17:23:34

标签: python pandas dataframe

不确定我是否很好地措辞了总结。但基本上,我有一个数据框,每个 ID 在某些列中可能有多个值。我想获取这些潜在值(假设有 3 个我关心)并为每个包含和 X 创建一个列,如果该 ID 具有相应的值。所以基本上采取这个:

<头>
some_id foo
1 10
1 20
2 10
2 20
2 30
3 30

并创建此:

<头>
some_id 10 20 30
1 X X
2 X X X
3 X

我已经能够做到这一点,但我想知道是否有比我更好的方法来做到这一点。我为每个列创建了一个新列,给它一个 X 或空白字符串,然后通过使用 .max() 聚合新列的函数来使用 Pandas 组。

这种方式对我来说似乎比优雅的解决方案更麻烦。另外,我在这里尝试完成的工作是否有一个术语?我不认为非规范化适用。

import pandas as pd

df = pd.DataFrame({'some_id': [1,1,2,2,2,3], 'foo': [10,20,10,20,30,30]})
print(df)

for col in [10,20,30]:
    df[col] = df.apply(lambda row : "X" if row['foo'] == col else "", axis = 1)

output_df = df.groupby('some_id')[[10,20,30]].max().reset_index()
print(output_df)

0 个答案:

没有答案