【问题标题】:How to loop over specifc ids in a csv file?如何遍历 csv 文件中的特定 ID?
【发布时间】:2021-12-31 23:38:29
【问题描述】:

我有一个 csv 文件:

ids    year    mean
1      2000    200
2      2000    199
3      2000    193
4      2000    189
1      2001    205
2      2001    197
3      2001    197
4      2001    196
.
.
.
4      2016    212

我想遍历每个人 id 以计算每个人的人员系数并将它们放入单独的列表中。 我该怎么做?

我尝试了一些耗时却从未成功的方法:

import pandas as pd
import numpy as np
import scipy.stats as stats

path = 'C:/path/'
#%%
df = pd.read_csv(path + 'mycsvfile.csv')

res = []
for i in range(df['id'].min(), df['id'].max()):
    x = stats.pearsonr(df['year'], df['mean'])
    res.append(x)

df = pd.DataFrame(res)

【问题讨论】:

    标签: python pandas loops statistics


    【解决方案1】:

    注意在

    for i in range(df['id'].min(), df['id'].max()):
        x = stats.pearsonr(df['year'], df['mean'])
        res.append(x)
    

    你有i,它从来没有用在for循环体中,所以你实际上一次又一次地计算同样的东西。 您需要的是 groupby,请考虑以下简单示例

    import pandas as pd
    df = pd.DataFrame({'id':[1,1,2,2,3,3],'x':[1,2,3,4,5,6],'y':[1,2,4,3,5,6]})
    out = df.groupby('id').apply(lambda data:stats.pearsonr(data['x'],data['y']))
    print(out)
    

    输出

    id
    1     (1.0, 1.0)
    2    (-1.0, 1.0)
    3     (1.0, 1.0)
    dtype: object
    

    解释:groupby id,然后对每个组应用 Pearson 的 R 计算。

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多