我有一个数据框A
,其中包含一些我要填充的空单元格,其数据框为B
。以下是一个示例数据:
A=
Month Type Sale
2016-01 A 20
2016-02 A 10
2016-01 B 40
2016-02 B 30
2016-01 C
2016-02 C
2016-01 D
2016-02 D
B=
Month Type Sale
2016-01 A 20
2016-02 A 10
2016-01 B 40
2016-02 B 30
2016-01 C 60
2016-02 C 40
2016-01 D 60
2016-02 D 40
这就是我所做的:
emptTypes= ['C', 'D']
x = A.groupby('Month', sort = False).Sale.sum()
B['Sale'][B['Type'].isin(emptTypes) & B['Month'].isin(x.index)]=x
没有任何反应!
答案 0 :(得分:1)
df['Sale'] = df.groupby('Month', sort = False).Sale.apply(lambda x: x.fillna(x.sum()))
print (df)
Month Type Sale
0 2016-01 A 20.0
1 2016-02 A 10.0
2 2016-01 B 40.0
3 2016-02 B 30.0
4 2016-01 C 60.0
5 2016-02 C 40.0
6 2016-01 D 60.0
7 2016-02 D 40.0
答案 1 :(得分:1)
实际上,由于pandas 0.14你可以直接在数据框上使用fillna
,你需要填写缺失值。
A.fillna(B)
Out[8]:
Type Sale
Month
2016-01 A 20.0
2016-02 A 10.0
2016-01 B 40.0
2016-02 B 30.0
2016-01 C 60.0
2016-02 C 40.0
2016-01 D 60.0
2016-02 D 40.0
我记得这一点,因为在我问了一段类似的问题之后,公关就是为了加入这个问题。
这将填充A
中缺少的值以及与B
对应且具有匹配标签(索引/列)的值。这更为通用,因为A
和B
不需要标记相同,并且当您有多索引时代码保持不变。