【问题标题】:pandas adding grouped data frame to another data frame as row熊猫将分组数据框作为行添加到另一个数据框
【发布时间】:2016-05-14 22:48:48
【问题描述】:

我得到以下数据框:

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)

如果缺少某个类别,我只想要零值。

有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用set_indexcategory_name 列移动到索引中。然后进行转置(.T)会将category_names 移动到列索引中:

    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.

    使用第二个 DataFrame 重塑 DataFrame

    pd.concatNaN 填充缺失值。使用fillna(0)NaNs 替换为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
    

    【讨论】:

    • 如果我有 df2 列 'retailer' ,我如何在插入时填写它?
    【解决方案2】:

    只需追加和替换 Nan :

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

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2020-12-14
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多