python - 如何将数据框值 ab,ba 更改为 ab
问题描述
df3=pd.DataFrame({'col1':['a','b','c','d','a'],
'col2':['b','a','a','c','c'],
})
df3['col3']=df3['col1']+df3['col2']
和数据框将是这样的
col1 col2 col3
0 a b ab
1 b a ba
2 c a ca
3 d c dc
4 a c ac
如果 ab=ba 我想要 ba, ca to ab, ac 这样
col1 col2 col3
0 a b ab
1 b a ab
2 c a ac
3 d c dc
4 a c ac
感谢您的帮助我可以添加更多问题吗?
df3=pd.DataFrame({'col1':['banana','apple','pie','mango','cola'],
'col2':['apple','banana','mango','cola','mango'],
})
df3['col3']=df3['col1']+df3['col2']
结果
col1 col2 col3
0 banana apple bananaapple
1 apple banana applebanana
2 pie mango piemango
3 mango cola mangocola
4 cola mango colamango
改变
col1 col2 col3
0 banana apple bananaapple
1 apple banana bananaapple
2 pie mango piemango
3 mango cola mangocola
4 cola mango mangocola
我想做的是过滤如果 ab=ba 更改为 ab
解决方案
如果保持第一个键的顺序很重要,下面是一个可行的解决方案:
df3.join(df3.groupby(df3.apply(frozenset, axis=1)) # use a frozenset a key for uniqueness
# below to craft a custom transform by using the first row per group
.apply(lambda g: pd.Series([''.join(g.iloc[0])]*len(g),
name='col3',
index=g.index,
))
.droplevel(0)
)
输出:
col1 col2 col3
0 a b ab
1 b a ab
2 c a ca
3 d c dc
4 a c ca
推荐阅读
- javascript - 如何在 vscode 中重构 js 对象的属性
- visual-c++ - 打印出一个充满指向类的指针的动态数组没有打印出正确的打印功能?
- bacnet - 如何创建虚拟 bacnet 设备和实现 python 库
- bash - BASH:如何查找远程目录中超过 7 天的所有文件并使用 RSYNC 将它们复制到本地目录?
- python - 试图跳过几行,但跳过的行仍在处理中
- r - 从字符串中提取数字并检查条件
- docker-compose - CommandError: /code/manage.py 已经存在,将项目或应用程序覆盖到现有目录中不会替换冲突文件
- c++ - 5000+深度递归时函数堆栈溢出
- python - 为什么 Selenium 只获取页面上第一个 ToolTip 的文本?
- c# - 将 Windows 桌面快捷方式拖放到 listView