Pandas合并两个DataFrame并保留索引,按p列整合a1、a2布尔值
你需要的是按p列分组后对a1、a2列做逻辑或聚合(只要组内存在至少一个True就返回True),直接用groupby+any即可实现,代码如下:
import pandas as pd asdf = pd.DataFrame({ 'a1':[True,True,True,False,False], 'a2':[False,False,False,True,True], 'p':['p1','p2','p3','p2','p3'] }) # 核心实现代码 res = asdf.groupby('p')[['a1', 'a2']].any() print(res)
运行后输出完全符合预期:
a1 a2 p p1 True False p2 True True p3 True True
原方案报错原因说明
你拆分出的tmp1、tmp2都同时保留了a1和a2两列,拼接/合并时同名列会自动加后缀区分,完全不需要拆分原表,直接分组聚合是效率最高、逻辑最清晰的实现方式。
如果需要更灵活的聚合配置,也可以用pivot_table实现,效果完全一致:
res = asdf.pivot_table(index='p', values=['a1', 'a2'], aggfunc='any')
内容的提问来源于stack exchange,提问作者gsandhu
相关产品推荐
相关产品推荐

