【问题标题】:Retaining a column with all strings during groupby on a pandas dataframe在熊猫数据框上的分组期间保留包含所有字符串的列
【发布时间】:2016-01-25 03:14:17
【问题描述】:
datetime    col_A   col_B
1/1/2012    125.501  A
1/2/2012    NaN      A
1/3/2012    125.501  A
1/4/2013    NaN      A
1/5/2013    125.501  B
2/28/2013   125.501  B
2/28/2014   125.501  B
1/2/2016    125.501  B
1/4/2016    125.501  B
2/28/2016   NaN      B

根据Fill in missing values in pandas dataframe using mean,我正在填写 col_A 缺失值,如下所示:

df = df.groupby([df.index.month, df.index.day]).transform(lambda x: x.fillna(x.mean()))

但是,当我这样做时,它会使 col_B 消失。如何保留所有字符串的 col_B?

【问题讨论】:

  • 在左边你需要df['col_A'] = 而不仅仅是df=。您正在用一列替换整个数据框。只需更换色谱柱。在这里没关系,但我也会在右侧指定col_A,而不是依赖mean 来忽略col_B,因为它是非数字的
  • 如果我有多个列,例如col_A,这是否也可以:df[['col_A','col_C']] = ...

标签: python pandas


【解决方案1】:

我觉得你可以加col_A:

df['col_A'] = df.groupby([df.index.month, df.index.day])['col_A'].transform(lambda x: 
                                                                          x.fillna(x.mean()))
print df
              col_A col_B
datetime                 
2012-01-01  125.501     A
2012-01-02  125.501     A
2012-01-03  125.501     A
2013-01-04  125.501     A
2013-01-05  125.501     B
2013-02-28  125.501     B
2014-02-28  125.501     B
2016-01-02  125.501     B
2016-01-04  125.501     B
2016-02-28  125.501     B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    相关资源
    最近更新 更多