EGM*_*686 7 python dataframe pandas
我有这样的DataFrame
id val1 val2
0 A B
1 B B
2 A A
3 A A
Run Code Online (Sandbox Code Playgroud)
我想交换以下值:
id val1 val2
0 B A
1 A A
2 B B
3 B B
Run Code Online (Sandbox Code Playgroud)
我需要考虑df可能有其他列我想保持不变.
尝试stacking、mapping、然后unstacking:
df[['val1', 'val2']] = (
df[['val1', 'val2']].stack().map({'B': 'A', 'A': 'B'}).unstack())
df
id val1 val2
0 0 B A
1 1 A A
2 2 B B
3 3 B B
Run Code Online (Sandbox Code Playgroud)
对于(更快)更快的解决方案,请使用嵌套列表理解。
mapping = {'B': 'A', 'A': 'B'}
df[['val1', 'val2']] = [
[mapping.get(x, x) for x in row] for row in df[['val1', 'val2']].values]
df
id val1 val2
0 0 B A
1 1 A A
2 2 B B
3 3 B B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |