更改 pandas 数据框中一列中的值(应用),具体取决于此数据框中其他列中带有掩码的特定值
Changing values (with apply) in one column of pandas dataframe depending on particular values in other column in this dataframe with mask
我有一个数据框:
df = pd.DataFrame({'col1': [69, 77, 88],
'col2': ['barf;', 'barf;', 'barfoo']})
print(df, '\n')
col1 col2
0 69 barf;
1 77 barf;
2 88 barfoo
我还有选择功能:
def selection_func(string):
'''
Function returns a, if string is 'barf;'
'''
if string == 'barf;':
return 'a'
else:
return string
所以我需要根据 col1 的条件更改 col2 中的特定值(不是全部):
condition = (df['col1'] == 69) | (df['col1'] == 88)
期望的输出:
col1 col2
0 69 a
1 77 barf;
2 88 barfoo
在写题时找到了解决方案:
df.loc[condition, 'col2'] = df.loc[condition, 'col2'].apply(func)
print(df, '\n')
col1 col2
0 69 a
1 77 barf;
2 88 barfoo
我有一个数据框:
df = pd.DataFrame({'col1': [69, 77, 88],
'col2': ['barf;', 'barf;', 'barfoo']})
print(df, '\n')
col1 col2
0 69 barf;
1 77 barf;
2 88 barfoo
我还有选择功能:
def selection_func(string):
'''
Function returns a, if string is 'barf;'
'''
if string == 'barf;':
return 'a'
else:
return string
所以我需要根据 col1 的条件更改 col2 中的特定值(不是全部):
condition = (df['col1'] == 69) | (df['col1'] == 88)
期望的输出:
col1 col2
0 69 a
1 77 barf;
2 88 barfoo
在写题时找到了解决方案:
df.loc[condition, 'col2'] = df.loc[condition, 'col2'].apply(func)
print(df, '\n')
col1 col2
0 69 a
1 77 barf;
2 88 barfoo