[英]pandas adding grouped data frame to another data frame as row
我得到以下數據框:
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)
如果缺少某些類別,我只想要零值。
有任何想法嗎 ?
使用set_index
將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 append
重塑的DataFrame與第二個DataFrame連接起來。
pd.concat
使用NaN
填充缺失值。 使用fillna(0)
將NaN
替換為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)
產量
A B C D
0 0 1 2 3.0
1 4 5 6 7.0
amount 0 1 2 0.0
只需追加並替換Nan:
pd.DataFrame(columns=products).append(df.T).fillna(0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.