[英]How to swap two (string) values in a column using pandas
我正在尝试同时replace
pandas
df
值。 对于下面的df
,我可以将X
替换为Y
,反之亦然。 但我必须同时做到这一点。 如果我尝试将其作为单独的函数执行,结果显然会将所有内容交换到最终函数。
import pandas as pd
d = ({
'Col' : ['X','Y','X','Y','X'],
})
df = pd.DataFrame(data=d)
df['Col'] = df['Col'].replace(['X'], 'Y')
df['Col'] = df['Col'].replace(['Y'], 'X')
print(df['Col'])
0 X
1 X
2 X
3 X
4 X
预期输出:
0 Y
1 X
2 Y
3 X
4 Y
这是一个已知问题(我认为是状态设计) - 用replace
字符串值会导致违反直觉的行为。
在这种情况下,我的建议是使用map
进行元素智能替换。
df['Col'].map({'X': 'Y', 'Y': 'X'})
0 Y
1 X
2 Y
3 X
4 Y
Name: Col, dtype: object
如果还有其他可能的值,而您只是交换两个值,请添加一个fillna
调用:
df['Col'].map({'X': 'Y', 'Y': 'X'}).fillna(df['Col'])
0 Y
1 X
2 Y
3 X
4 Y
Name: Col, dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.