如何获得用pandas中的另一列值选择的行的平均值

时间:2016-10-16 19:51:30

标签: python pandas numpy

我只想在列Dates等于Oct-16时计算得分1的均值:

enter image description here

我最初的尝试是:

 import pandas as pd
 import numpy as np
 import os

 dataFrame = pd.read_csv("test.csv")

 for date in dataFrame["Dates"]:
    if date == "Oct-16":
        print(date)##Just checking
        print(dataFrame["Score 1"].mean())

但我的结果是整个专栏Score 1

的意思

我尝试的另一件事是手动告诉它计算平均值的指数:

dataFrame["Score 1"].iloc[0:2].mean()

但理想情况下,如果Dates == "Oct-16",我想找到一种方法。

3 个答案:

答案 0 :(得分:3)

迭代这些行并没有利用熊猫的优势。如果您想根据其他列的值对列执行某些操作,可以使用.loc[]

dataFrame.loc[dataFrame['Dates'] == 'Oct-16', 'Score 1']

.loc[]的第一部分使用指定的条件(dataFrame['Dates'] == 'Oct-16')选择所需的行。第二部分指定所需的列(Score 1)。然后,如果你想得到均值,你可以把.mean()放在最后:

dataFrame.loc[dataFrame['Dates'] == 'Oct-16', 'Score 1'].mean()

答案 1 :(得分:0)

import pandas as pd
import numpy as np
import os

dataFrame = pd.read_csv("test.csv")

dates = dataFrame["Dates"]
score1s = dataFrame["Score 1"]
result = []

for i in range(0,len(dates)):
    if dates[i] == "Oct-16":
        result.append(score1s[i])

print(result.mean())

答案 2 :(得分:0)

所有日期的平均值

dataframe.groupby('Dates').['Score 1'].mean()