根据相应的值替换值,但如果不满足条件则保留值
Replace value based on a corresponding value but keep value if criteria not met
给定以下数据框,
输入 df:
Cost_centre
Pool_costs
90272
A
92705
A
98754
A
91350
A
在给定 Cost_centre 值的情况下,将 Pool_costs 值替换为 'B',但如果 Cost_centre 值未出现在列表中,则保留 Pool_costs 值。
输出 df:
Cost_centre
Pool_costs
90272
B
92705
A
98754
A
91350
B
当前代码:
此代码一直运行到 lambda 的 else 端;再次找到 Pool_costs 值是困难的部分。
df = pd.DataFrame({'Cost_centre': [90272, 92705, 98754, 91350],
'Pool_costs': ['A', 'A', 'A', 'A']})
pool_cc = ([90272,91350])
pool_cc_set = set(pool_cc)
df['Pool_costs'] = df['Cost_centre'].apply(lambda x: 'B' if x in pool_cc_set else df['Pool_costs'])
print (df)
我使用了以下内容并取得了成功,但是当有很多 cost_centre 需要更改时,很难阅读和修改。
df = pd.DataFrame({'Cost_centre': [90272, 92705, 98754, 91350],
'Pool_costs': ['A', 'A', 'A', 'A']})
filt = df['Cost_centre'] == '90272'|df['Cost_centre'] == '91350')
df.loc[filt, 'Pool_costs'] = 'B'
IIUC,可以用isin
filt = df['Cost_centre'].isin([90272, 91350])
df.loc[filt, 'Pool_costs'] = 'B'
print(df)
Cost_centre Pool_costs
0 90272 B
1 92705 A
2 98754 A
3 91350 B
给定以下数据框,
输入 df:
Cost_centre | Pool_costs |
---|---|
90272 | A |
92705 | A |
98754 | A |
91350 | A |
在给定 Cost_centre 值的情况下,将 Pool_costs 值替换为 'B',但如果 Cost_centre 值未出现在列表中,则保留 Pool_costs 值。
输出 df:
Cost_centre | Pool_costs |
---|---|
90272 | B |
92705 | A |
98754 | A |
91350 | B |
当前代码:
此代码一直运行到 lambda 的 else 端;再次找到 Pool_costs 值是困难的部分。
df = pd.DataFrame({'Cost_centre': [90272, 92705, 98754, 91350],
'Pool_costs': ['A', 'A', 'A', 'A']})
pool_cc = ([90272,91350])
pool_cc_set = set(pool_cc)
df['Pool_costs'] = df['Cost_centre'].apply(lambda x: 'B' if x in pool_cc_set else df['Pool_costs'])
print (df)
我使用了以下内容并取得了成功,但是当有很多 cost_centre 需要更改时,很难阅读和修改。
df = pd.DataFrame({'Cost_centre': [90272, 92705, 98754, 91350],
'Pool_costs': ['A', 'A', 'A', 'A']})
filt = df['Cost_centre'] == '90272'|df['Cost_centre'] == '91350')
df.loc[filt, 'Pool_costs'] = 'B'
IIUC,可以用isin
filt = df['Cost_centre'].isin([90272, 91350])
df.loc[filt, 'Pool_costs'] = 'B'
print(df)
Cost_centre Pool_costs
0 90272 B
1 92705 A
2 98754 A
3 91350 B