python - 大熊猫合并两列被视为“集合”
问题描述
我试图在 pandas 中找到一种简单的方法来合并行,我们将一组列视为集合。例如A,B是一个集合。
A B C
0 a b 1
1 b a 3
2 c c 1
3 d a 5
所以我想合并 on=[A,B] 给我:
A B C1 C2
0 a b 1 3
2 c c 1 Nan
3 d a 5 Nan
解决方案
IIUC,你可以使用
np.sort
+groupby
d = pd.DataFrame(np.sort(df[['A', 'B']].values,1))
df.groupby((d!=d.shift()).cumsum().sum(1)).C.agg(list).apply(pd.Series)
0 1
2 1.0 3.0
4 1.0 NaN
6 5.0 NaN
或者
frozenset
+apply
df.groupby(df[['A', 'B']].apply(frozenset,1)).C.agg(list).apply(pd.Series)
0 1
(a, b) 1.0 3.0
(c) 1.0 NaN
(a, d) 5.0 NaN
推荐阅读
- javascript - 如何更改滑块范围样式?
- sql - Oracle查询顺序
- r - 如何在重复计算中有效地计算唯一值的数量?
- c++ - 在 CMake 中为每个目标设置编译器/链接器标志
- android - 构建发布版本 Retrofit2 后获得 200 但为空数据
- python - 我们如何使用 python 从存储容器 azure 中读取文件
- c# - 我的 c# 项目中有一个本地包,它存储在不同的位置,具体取决于我所在的开发机器
- c# - 为什么c#不能从非托管dll中获取正确的参数值
- drop-down-menu - Kivy 在更改后动态更新 MDDropDownMenu 项目
- c# - 我可以将基类类型作为泛型参数传递给接口吗