我有一个列的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 0发布于 2021-11-25 21:59:22
您可以只使用pandas函数replace,它可以进行类似于dict的替换。
df.replace({'YourColumnName': {'good': 'bad',
'bad': 'good'}})发布于 2021-11-25 22:00:09
你可以用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"}
https://stackoverflow.com/questions/70117613
复制相似问题