【发布时间】:2016-03-10 23:04:36
【问题描述】:
这是我在 StackOverflow 上的第一个问题,所以请告诉我是否应该用不同的方式表述...
我想替换 pandas Dataframe 列中的一些值,这取决于与另一列中的值相关的条件,但如果条件为 False,则保留原始值。例如:
import pandas as pd
df=pd.DataFrame({'col1':['A','B','C','B'], 'col2':['z','x','x','x']},
columns=['col1','col2'])
df =
col1 col2
0 A z
1 B x
2 C x
3 B x
说,如果 col1 中的值为 'B' 或 'C',我想将 col2 中的值替换为 'q',但保留原始值('z','x'),如果col1 不是 B 或 C。实际上,我有更大的 DataFrame,col1 中有数百个唯一值,并且希望将 col2 中的值替换为其中的大约 20 个。
我目前的解决方案是创建一个字典,使用 col1 作为键,使用 col2 作为值,然后:
dict1.update({'B':'q'})
df[col2] = df[col1].map(dict1)
但这个技巧只有在两列中的值完全相关时才有效(或者如果 col1 中的值是唯一的)。
所以我想知道是否有更优雅的解决方案。因此,如果 col1 满足某个条件,则仅替换 col2 中的值,否则保留原始值。
【问题讨论】: