我得到以下数据框:
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 :(得分:1)
使用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
)在列索引中,您就可以连接
第二个DataFrame重构的DataFrame使用append
或`pd.concat。
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
答案 1 :(得分:0)
只需追加并替换Nan:
pd.DataFrame(columns=products).append(df.T).fillna(0)