2016-05-14 290 views
0

我获得以下数据框:大熊猫将分组数据帧到另一个数据帧

category_name    amount 
Blades & Razors & Foam  158 
Diaper      486 
Empty      193 
Fem Care     2755 
HairCare     3490 
Irrelevant    1458 
Laundry     889 
Oral Care     2921 
Others      69 
Personal Cleaning Care 1543 
Skin Care     645 

我希望把它作为行添加到下面的具有附加retailer column即不存在与第一数据帧数据帧。

categories_columns = ['retailer'] + self.product_list.category_name.unique().tolist() 
categories_df = pd.DataFrame(columns=categories_columns) 

如果某些类别丢失,我只想要零值。

任何想法?

回答

0

只需追加和替换楠:

pd.DataFrame(columns=products).append(df.T).fillna(0) 
1

使用​​到category_name列移动到索引。然后以转置(.T)将category_name此举入列索引:

In [35]: df1 
Out[35]: 
    amount cat 
0  0 A 
1  1 B 
2  2 C 

In [36]: df1.set_index('cat').T 
Out[36]: 
cat  A B C 
amount 0 1 2 

一旦类别名称(cat,以上)都在列索引,您可以连接 重整的数据帧与第二数据帧使用append或`pd.concat。

pd.concatNaN填写缺失值。使用fillna(0)以0


import numpy as np 
import pandas as pd 

df1 = pd.DataFrame({'amount': range(3), 'cat': list('ABC')}) 
df2 = pd.DataFrame(np.arange(2*4).reshape(2, 4), columns=list('ABCD')) 
result = df2.(df1.set_index('cat').T).fillna(0) 
print(result) 

更换NaN产量的影响

 A B C D 
0  0 1 2 3.0 
1  4 5 6 7.0 
amount 0 1 2 0.0 
+0

如果我有DF2列“零售商”,我怎么能填补它插入? –