2016-05-14 291 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列「零售商」,我怎麼能填補它插入? –