繁体   English   中英

如何使用熊猫交换列中的两个(字符串)值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM