【发布时间】:2020-03-07 05:00:09
【问题描述】:
我希望在 Pandas 数据框中创建一个新列,其中包含由 df 行值过滤的列表值。
df = pd.DataFrame({'Index': [0,1,3,2], 'OtherColumn': ['a', 'b', 'c', 'd']})
Index OtherColumn
0 a
1 b
3 c
2 d
l = [1000, 1001, 1002, 1003]
期望的输出:
Index OtherColumn Value
0 a -
1 b -
3 c 1003
2 d -
我的代码:
df.loc[df.OtherColumn == 'c', 'Value'] = l[df.Index]
返回错误,因为 'df.Index' 不被识别为 int 而是作为列表(不按 OtherColumn == 'c' 过滤)。
对于 R 用户,我正在寻找:
df[OtherColumn == 'c', Value := l[Index]]
谢谢。
【问题讨论】:
-
你的问题有错误吗?您的 df 代码与下面显示的不同?索引应该是 0,1,3,2 而不是 0,1,2,3?
标签: python pandas dataframe filter