【发布时间】:2023-03-21 13:25:01
【问题描述】:
我有以下数据框:
Y = list(range(5))
Z = np.full(5, np.nan)
df = pd.DataFrame(dict(ColY = Y, ColZ = Z))
print(df)
ColY ColZ
0 0 NaN
1 1 NaN
2 2 NaN
3 3 NaN
4 4 NaN
还有这本词典:
Dict = {
0 : 1,
1 : 2,
2 : 3,
3 : 2,
4 : 1
}
如果通过 Dict 对应的 ColY 值为 2,我想用“ok”填充 ColZ。因此,我想要以下数据框:
ColY ColZ
0 0 NaN
1 1 ok
2 2 NaN
3 3 ok
4 4 NaN
我试过这个脚本:
df['ColZ'] = df['ColZ'].apply(lambda x : "ok" if Dict[x['ColY']] == 2 else Dict[x['ColY']])
我有这个错误:
TypeError: 'float' object is not subscriptable
你知道为什么吗?
【问题讨论】:
-
df['ColZ'] = df['ColY'].apply(lambda x : "ok" if Dict[x] == 2 else np.nan)
标签: python pandas syntax apply