熊猫框架复杂的自我加入

时间:2018-07-13 15:48:03

标签: python-3.x pandas

如果我有以下框架

id    | value
A     | 50
B     | 20
C     | 10
A;B   |
C;B   |
A;B;C | 

用70、30、80填补失踪人数的最聪明方法是什么?

我试图将数据框分为两个字典和循环,但我觉得有更简单的方法。

我的Python是3.5

2 个答案:

答案 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_dummiesdot一起使用

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