【问题标题】:how to calculate row average in panda data frame?如何计算熊猫数据框中的行平均值?
【发布时间】:2016-09-12 08:48:26
【问题描述】:

我有带有 T maxT min 列的 pandas df。我想在下一列计算T mean。我用这个df['T mean']= df[['T max','T min']].mean(axis=1) 做了,但没有成功。我得到了T max 作为T mean。有人可以帮帮我吗?

【问题讨论】:

  • 请提供一个示例数据框。
  • 发布原始数据、您的代码、所需输出和错误输出

标签: python-3.x pandas dataframe mean


【解决方案1】:

我认为 T min - type 的列有问题,值是 string,而不是数字。所以你需要通过astype

示例:

df=pd.DataFrame({'T max':[1,2,3],'T min':['5','6','7']})
print (df)
   T max T min
0      1     5
1      2     6
2      3     7

print (type(df.ix[0,'T min']))
<class 'str'>

df['T mean']= df[['T max','T min']].mean(axis=1) 
print (df)
   T max T min  T mean
0      1     5     1.0
1      2     6     2.0
2      3     7     3.0

#cast column to int
df['T min'] = df['T min'].astype(int)

print (type(df.ix[0,'T min']))
<class 'numpy.int32'>

df['T mean new']= df[['T max','T min']].mean(axis=1) 
print (df)
   T max  T min  T mean  T mean new
0      1      5     1.0         3.0
1      2      6     2.0         4.0
2      3      7     3.0         5.0

如果astype返回错误:

ValueError: int() 以 10 为底的无效文字:'aaa'

表示T min 列中至少有一个无效值。

示例:

df=pd.DataFrame({'T max':[1,2,3],'T min':['5','6','aaa']})
print (df)
   T max T min
0      1     5
1      2     6
2      3   aaa

df['T mean']= df[['T max','T min']].mean(axis=1) 
print (df)
   T max T min  T mean
0      1     5     1.0
1      2     6     2.0
2      3   aaa     3.0

#check invalid rows where is bad value in T min
print (df[ pd.to_numeric(df['T min'], errors='coerce').isnull()])
   T max T min  T mean
2      3   aaa     3.0

#replace invlid value to NaN
df['T min'] = pd.to_numeric(df['T min'], errors='coerce')

df['T mean new']= df[['T max','T min']].mean(axis=1) 
print (df)
   T max  T min  T mean  T mean new
0      1    5.0     1.0         3.0
1      2    6.0     2.0         4.0
2      3    NaN     3.0         3.0

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2021-07-19
    • 2021-07-21
    • 1970-01-01
    • 2014-11-30
    • 2020-04-26
    相关资源
    最近更新 更多