我有一个列的dataframe,它有两个值:好的和坏的。
我想知道是否有办法可以交换它们。例如,无论何时值是好的,都应该改为坏的,反之亦然。有办法交换值吗?
编辑:我想在for循环之后为某些索引交换值。示例:
for i in np.arange(0,len(df)-1):
if(df.loc[i,'othercolumnname']>=100:
# swap the values here发布于 2021-11-25 21:56:21
使用Series.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对于问题的编辑部分,可以将Series.map和Series.where组合起来。
import pandas as pd
df = pd.DataFrame({'x': ['good', 'bad', 'bad', 'good'], 'y': [100, 0, 100, 0]})
print(df)
df['x'] = df.x.map({'good': 'bad', 'bad': 'good'}).where(df.y >= 100, df.x)
print(df)其思想是全局交换值(使用map),然后返回(使用where)到条件df.y >= 100为False的原始x。
或者,您可以使用DataFrame.apply
swap = {'good': 'bad', 'bad': 'good'}
df['x'] = df.apply(lambda row: swap[row.x] if row.y >= 100 else row.x, axis=1) x y x y
0 good 100 0 bad 100
1 bad 0 → 1 bad 0
2 bad 100 2 good 100
3 good 0 3 good 0https://stackoverflow.com/questions/70117613
复制相似问题