Pandas DataFrame的条件均值

Oli*_*r G 5 python nan mean pandas

我有一个数据集,我想从中创建几个平均值的多个变量.

我开始时:

data2['socialIdeology2'].mean()

data2['econIdeology'].mean()
Run Code Online (Sandbox Code Playgroud)

^完美的工作,并给我我正在寻找的平均值.

现在,我正在尝试进行条件均值,因此仅对数据集中的选择组进行均值.(我想要在2016年选举中投票选出的意识形态细分)在Stata中,代码类似于:mean(variable) if voteChoice == 'Clinton'

调查一下,我得出的结论是条件均值不是一个东西(虽然希望我错了?),所以我正在编写自己的函数.

这是我刚开始使用'均值'函数,为条件均值函数创建基础:

def mean():
    sum = 0.0
    count = 0
    for index in range(0, len(data2['socialIdeology2'])):
        sum = sum + (data2['socialIdeology2'][index])
        print(data2['socialIdeology2'][index])
        count = count + 1
    return sum / count

print(mean())
Run Code Online (Sandbox Code Playgroud)

然而,我不断得到'nan'作为结果.打印data2['socialIdeology2'][index]循环内打印nan一遍又一遍.

所以我的问题是:如果存储在socialIdeology2变量中的数据确实是一个nan(我不明白它是怎么回事),为什么.mean()函数可以使用呢?

我怎样才能按类别获得生成方式?

Bra*_*mon 7

有条件的意思确实是熊猫的事情.你可以使用DataFrame.groupby():

means = data2.groupby('voteChoice').mean()
Run Code Online (Sandbox Code Playgroud)

或者,在您的情况下,以下将更有效:

means = data2.groupby('voteChoice')['socialIdeology2'].mean()
Run Code Online (Sandbox Code Playgroud)

深入了解你正在寻找的意思.(第一种情况将计算所有列的均值.)这假设这voteChoice是您要条件的列的名称.