这是我在StackOverflow上的第一个问题,如果需要我改变任何东西,请告诉我...
我想替换pandas数据框架列中的某些值,取决于与另一列中的值相关的条件,但如果条件为False,保留原始值。例如:
但是这个技巧只适用于两列中的值完全相关(或者如果col1的值是唯一的)。因此,我在想是否有更优雅的解决方案。只有当col1符合特定条件时,才替换col2中的值,否则保留原始值。
我想替换pandas数据框架列中的某些值,取决于与另一列中的值相关的条件,但如果条件为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',但是如果col1的值不是B或C,则保留原始值('z','x')。实际上,我的DataFrame中col1有数百个唯一值,并且我想要替换其中约20个的col2值。
我当前的解决方案是创建一个字典,使用col1作为键,col2作为值,然后:
dict1.update({'B':'q'})
df[col2] = df[col1].map(dict1)
但是这个技巧只适用于两列中的值完全相关(或者如果col1的值是唯一的)。因此,我在想是否有更优雅的解决方案。只有当col1符合特定条件时,才替换col2中的值,否则保留原始值。