首页 > 解决方案 > 在 Pandas Dataframe 中组合列的值和状态条件

问题描述

我有以下数据框:

import pandas as pd
df = pd.DataFrame({'a': ['1', '1', '1', '2', '2', '2', '3', '3', '4', '4'], 'b': ['True', 'False', 'True', 'True', 'True', 'True', 'True', 'True', 'False', 'False']})
 a      b
0  1   True
1  1  False
2  1   True
3  2   True
4  2   True
5  2   True
6  3   True
7  3   True
8  4  False
9  4  False

我想将a 列中的所有数字与相同的数字结合起来。此外,我想在b 列中说明,如果b的所有值都为真,则特定a将其设置为真,或者如果至少一个为假,则将其设置为假。

因此,结果应如下所示:

 a      b
0  1  False
1  2   True
2  3   True
3  4  False

我如何实现这一目标?我用 groupby 试过了,但我找不到合适的解决方案。

标签: pythonpandasdataframe

解决方案


用于GroupBy.all测试所有值是否为Trues:

#if necessary convert strings to boolean
df['b'] = df['b'].map({'True':True, 'False':False})

df = df.groupby('a', as_index=False)['b'].all()
print (df)
   a      b
0  1  False
1  2   True
2  3   True
3  4  False

推荐阅读