【发布时间】:2020-09-27 04:55:39
【问题描述】:
假设我有df:
df = pd.DataFrame({'col1': ['A', 'B', 'C', 'D', 'E']})
还有d:
d = {'A': 1, 'B': 2}
我想创建df['col2'],以便从d 中获取值(如果它们存在),如果不存在,则用一些填充值(例如3)来均衡它们。我可以这样做:
df['col2'] = pd.Series(np.NaN)
for k, v in d.items():
df['col2'] = np.where(df['col1']==k, v, df['col2'])
df['col2'] = df.col2.fillna(3)
这给了我:
df
col1 col2
0 A 1.0
1 B 2.0
2 C 3.0
3 D 3.0
4 E 3.0
我的问题是:是否有可能不使用像 do 这样的循环来实现这一点?
【问题讨论】:
-
使用
df['col2'] = df.col2.map(d).fillna(3)
标签: python pandas numpy dataframe for-loop