总结熊猫数据框中的某些行

时间:2016-02-08 04:19:24

标签: python-3.x pandas

我有一个包含1000行和10列的pandas数据帧。我希望聚合行100-1000并用一行代替它们,其中indexvalue为'> 100',列值是每列的行100-1000的总和。有关简单方法的任何想法吗?提前致谢

说我有以下

     a    b    c
0    1    10   100
1    2    20   100
2    3    60   100
3    5    80   100

我想用

替换它
     a    b    c
0    1    10   100
1    2    20   100
>1   8    140  200

1 个答案:

答案 0 :(得分:0)

您可以使用ixloc,但会显示SettingWithCopyWarning

ind = 1
mask = df.index > ind
df1 = df[~mask]
df1.ix['>1', :] = df[mask].sum()

In [69]: df1
Out[69]:
    a    b    c
0   1   10  100
1   2   20  100
>1  8  140  200

要设置它而不发出警告,您可以使用pd.concat进行设置。由于两个移调而可能不优雅但有效:

ind = 1
mask = df.index > ind
df1 = pd.concat([df[~mask].T, df[mask].sum()], axis=1).T
df1.index = df1.index.tolist()[:-1] + ['>{}'.format(ind)]

In [36]: df1
Out[36]:
    a    b    c
0   1   10  100
1   2   20  100
>1  8  140  200

一些示威:

In [37]: df.index > ind
Out[37]: array([False, False,  True,  True], dtype=bool)

In [38]: df[mask].sum()
Out[38]:
a      8
b    140
c    200
dtype: int64

In [40]: pd.concat([df[~mask].T, df[mask].sum()], axis=1).T
Out[40]:
   a    b    c
0  1   10  100
1  2   20  100
0  8  140  200