【问题标题】:Why am I getting an empty row in my dataframe after using pandas apply?为什么在使用 pandas apply 后我的数据框中出现空行?
【发布时间】:2014-03-27 16:24:47
【问题描述】:

我对 Python 和 Pandas 还很陌生,并试图弄清楚如何进行简单的拆分连接应用。我遇到的问题是,我从 Pandas 的应用功能返回的所有数据帧的顶部都有一个空白行,我不知道为什么。谁能解释一下?

以下是演示问题的最小示例,而不是我的实际代码:

sorbet = pd.DataFrame({
  'flavour': ['orange', 'orange', 'lemon', 'lemon'],
  'niceosity' : [4, 5, 7, 8]})

def calc_vals(df, target) :
    return pd.Series({'total' : df[target].count(), 'mean' : df[target].mean()})

sorbet_grouped = sorbet.groupby('flavour')
sorbet_vals = sorbet_grouped.apply(calc_vals, target='niceosity')

如果我再做print(sorted_vals) 我得到这个输出:

         mean  total
flavour                 <--- Why are there spaces here?
lemon     7.5      2
orange    4.5      2

[2 rows x 2 columns]

将此与print(sorbet)进行比较:

  flavour  niceosity     <--- Note how column names line up
0  orange          4
1  orange          5
2   lemon          7
3   lemon          8

[4 rows x 2 columns]

造成这种差异的原因是什么,我该如何解决?

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    groupby/apply 操作返回的是一个带有命名索引的新 DataFrame。该名称对应于原始 DataFrame 分组所依据的列名。

    名称显示在索引上方。如果将其重置为None,则该行将消失:

    In [155]: sorbet_vals.index.name = None
    
    In [156]: sorbet_vals
    Out[156]: 
            mean  total
    lemon    7.5      2
    orange   4.5      2
    
    [2 rows x 2 columns]
    

    请注意,name 很有用——我真的不建议删除它。该名称允许您按名称而不是仅按数字来引用该索引。


    如果您希望索引为列,请使用reset_index

    In [209]: sorbet_vals.reset_index(inplace=True); sorbet_vals
    Out[209]: 
      flavour  mean  total
    0   lemon   7.5      2
    1  orange   4.5      2
    
    [2 rows x 3 columns]
    

    【讨论】:

    • 不确定 OP 是想要这个还是 .reset_index() 的 2x3 结果。
    • 啊,好吧,所以它的原因是 groupby/apply 操作 用分组值索引替换通常的索引?对吗?
    • 是的,groupby/apply的结果是一个新的DataFrame,有一个命名的索引,名字对应于原来DataFrame分组的列名。
    • 我想要创建一个 DataFrame,其风格、均值和总数与普通列一样。有没有一种自然的方法可以做到这一点?
    • 啊,那么您正在寻找 DSM 的答案。 sorbet_vals.reset_index()。 @DSM:你想发布答案吗?
    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2015-02-24
    相关资源
    最近更新 更多