【问题标题】:How to calculate the mean between multiple rows that matchs by a given id [duplicate]如何计算与给定ID匹配的多行之间的平均值[重复]
【发布时间】:2018-11-13 03:46:21
【问题描述】:

我想计算多个行的平均值,这些行具有一个匹配的单个值,并将其存储在另一个 csv 文件中。 给定的数据是:

ID   salary days_of_work ...
1    2000   3            ...
1    1890   2            ...
1    2109   4            ...
2     .
2     .
2     .
2
3
3
...  

然后在另一个文件中为每个 ID 获取一行,其中包含其他列的数据的平均值,如下所示:

ID   salary     days_of_work ...
1    1999.6667  3 ...
2    ...
3    ...
.
.
.

更新:

我尝试这样做,但是对于具有 utc_time 而不是 ID 的文件

import pandas as pd


keep_col = ['utc_time','temperature','pressure','humidity','wind_direction','wind_speed/kph']
pd.read_csv('Gridpoints.csv', names=keep_col).to_csv("GridPoints/test.csv", index=False)



f=pd.read_csv("Gridpoints"+".csv")
df = f[keep_col]

df.groupby(['utc_time']).mean()

df.to_csv("GridPoints/test.csv", index=False)

所以首先我要做的是删除一个列,然后在获得的数据帧上,我想为 utc_time 列做这件事,但它什么也没做

【问题讨论】:

  • df.groupby('ID').mean()?
  • 我正在尝试这样做,但问题是我的 ID 有 utc_time 并且它不起作用
  • 我更新了我的帖子了解更多详情
  • df.groupby(['utc_time']).mean() 返回一个新的data frame。做df2 = df.groupby(['utc_time']).mean() 然后df2.to_csv(...)

标签: python pandas csv


【解决方案1】:

首先您需要按 ID 分组,然后计算平均值。

import pandas as pd

df = pd.read_csv('Book1.csv')

df1 = df.groupby(['ID'], as_index= False)[['Salary', 'days']].mean()
print(df1)

ID       Salary  days
1  1999.666667   3.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2021-08-18
    • 2015-05-06
    相关资源
    最近更新 更多