如果我有以下框架
id | value
A | 50
B | 20
C | 10
A;B |
C;B |
A;B;C |
用70、30、80填补失踪人数的最聪明方法是什么?
我试图将数据框分为两个字典和循环,但我觉得有更简单的方法。
我的Python是3.5
答案 0 :(得分:2)
使用apply
In [15]: mapper = df.dropna().set_index('id')['value'].to_dict()
In [16]: df.id.apply(lambda x: sum(map(mapper.get, x.split(';'))))
Out[16]:
0 50.0
1 20.0
2 10.0
3 70.0
4 30.0
5 80.0
Name: id, dtype: float64
答案 1 :(得分:1)
将get_dummies
与dot
一起使用
df.id.str.get_dummies(sep=';').dot([50,20,10])
Out[213]:
0 50
1 20
2 10
3 70
4 30
5 80
dtype: int64