【问题标题】:pandas add a column with only one row熊猫添加只有一行的列
【发布时间】:2018-10-05 01:51:15
【问题描述】:

这听起来有点奇怪,但我认为这正是我现在需要的:

我得到了几个包含浮点数列的 pandas 数据框,例如:

   a  b  c
0  0  1  2
1  3  4  5
2  6  7  8

现在我想添加一列,只有一行,该值等于列'a'的平均值,在本例中为 3.0。所以新的数据框看起来像这样:

   a  b  c  average
0  0  1  2  3.0
1  3  4  5
2  6  7  8

并且下面的所有行都是空的。

我尝试过df['average'] = np.mean(df['a']) 之类的东西,但这给了我一整列 3.0。任何帮助将不胜感激。

【问题讨论】:

  • 你不能兄弟。这是一个数据框。您可以做的是将第一行后面的所有值设置为NaNs
  • @ℕʘʘḆḽḘ 可以做假的方式添加空字符串
  • 伟大的最小、完整和可验证的例子。

标签: python pandas dataframe


【解决方案1】:

分配一个系列,这样更干净。

df['average'] = pd.Series(df['a'].mean(), index=df.index[[0]])

或者,更好的是,使用 loc 分配:

df.loc[df.index[0], 'average'] = df['a'].mean().item()

填充 NaN 很简单,你可以这样做

df['average'] = df['average'].fillna('')
df
   a  b  c average
0  0  1  2       3
1  3  4  5        
2  6  7  8        

【讨论】:

    【解决方案2】:

    可以做这样的事情:

    df['average'] = [np.mean(df['a'])]+['']*(len(df)-1)
    

    【讨论】:

    • 我想要的空白就像你没有打印出来的东西一样
    【解决方案3】:

    这是一个完整的例子:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(
        [(0,1,2), (3,4,5), (6,7,8)],
        columns=['a', 'b', 'c'])
    print(df)
    
       a  b  c
    0  0  1  2
    1  3  4  5
    2  6  7  8
    
    df['average'] = ''
    df['average'][0] = df['a'].mean()
    print(df)
    
       a  b  c average
    0  0  1  2       3
    1  3  4  5        
    2  6  7  8  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2015-09-20
      • 2019-11-21
      • 2021-04-02
      • 1970-01-01
      • 2021-06-11
      相关资源
      最近更新 更多