Pandas平均列在其他列中具有相同的值

时间:2018-02-16 15:49:01

标签: python pandas dataframe append

我的df看起来像这样:

headings = ['foo','bar','qui','gon','jin']
table = [[1,1,3,4,5],
         [1,1,4,5,6],
         [2,2,3,4,5],
         [2,2,4,5,6],
         ]
df = DataFrame(columns=headings,data=table)

    foo bar qui gon jin
0   1   1   3   4   5
1   1   1   4   5   6
2   2   2   3   4   5
3   2   2   4   5   6

我想要做的是在某个列具有相似值时对所有列的值进行平均,例如我希望将所有列的平均值设置为相似的' bar'值,然后使用答案创建数据框。我尝试了以下方法:

newDf = DataFrame([])

for i in df['bar'].loc[1:2]:
    newDf = newDf.append(df[df['foo'] == i].mean(axis=0),ignore_index=True)

它输出我想要的东西:

bar foo gon jin qui
0   1.00E+00    1.00E+00    4.50E+00    5.50E+00    3.50E+00
1   2.00E+00    2.00E+00    4.50E+00    5.50E+00    3.50E+00

但是当我尝试使用另一个有值的列时,它不会输出我想要的内容:

for i in df['qui'].loc[1:2]:
    newDf = newDf.append(df[df['foo'] == i].mean(axis=0),ignore_index=True)

可生产

    bar foo gon jin qui
0   NAN NAN NAN NAN NAN
1   NAN NAN NAN NAN NAN

你能帮我一把吗?

附带问题:如何防止按字母顺序排列新数据框的列?是否可以维护原始数据帧的顺序?

0 个答案:

没有答案