[英]Pandas df swap column value
我有 dataframe 的列有 2 个值:好和坏。
我想知道是否有办法可以交换它们。 例如,只要值是好的,就应该将其更改为坏的,反之亦然。 有没有办法交换值?
编辑:我想在 for 循环之后交换某些索引的值。 例子:
for i in np.arange(0,len(df)-1):
if(df.loc[i,'othercolumnname']>=100:
# swap the values here
使用map
怎么样:
import pandas as pd
df = pd.DataFrame({'x': ['good', 'bad', 'bad', 'good']})
print(df)
df['x'] = df.x.map({'good': 'bad', 'bad': 'good'})
print(df)
x x
0 good 0 bad
1 bad → 1 good
2 bad 2 good
3 good 3 bad
您可以只使用pandas
function replace
它可以进行类似字典的替换。
df.replace({'YourColumnName': {'good': 'bad',
'bad': 'good'}})
您可以使用replace
来实现此目的...
df = pd.DataFrame({'A': ["good", "good", "bad", "bad", "good"],
'B': [5, 6, 7, 8, 9],
'C': ['a', 'b', 'c', 'd', 'e'],
'D': ["good", "good", "bad", "bad", "good"],})
print(df.replace({'A': {"good": "bad", "bad": "good"}}))
这将仅限于A
列。 如果您想要所有列,您可以在替换中取消嵌套字典。 并通过{"good": "bad", "bad": "good"}
使用np.where
和 @j1-lee 的 dataframe:
import numpy as np
df = pd.DataFrame({'x': ['good', 'bad', 'bad', 'good']})
df['y'] = np.where(df['x'].eq('good'),'bad','good')
x y
0 good bad
1 bad good
2 bad good
3 good bad
这是一个可以按预期对两个唯一值起作用的技巧:
df['x'].replace({k: v for k, v in zip(df['x'].unique(), df['x'].unique()[::-1])})
Output:
>>> df
x
0 good
1 bad
2 bad
3 good
>>> df['x'] = df['x'].replace({k: v for k, v in zip(df['x'].unique(), df['x'].unique()[::-1])})
>>> df
0 bad
1 good
2 good
3 bad
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.