如何只在python pandas中组合给定的行?

时间:2018-03-09 17:48:21

标签: python pandas

我知道pandas可以使用groupby()函数自动连接行并获取行的总和。但是如何组合两个或多个不具有共同值的行。请考虑以下示例数据集。

  Col1 Col2 Col3 Col4
0 11   13   5.5   0.9
1 14   6    3.1   0.7
2 18   7    5.5   0.1
3 9    2    7.0   0.2
4 17   10   2.3   1.1
5 15   3    6.9   2.7
6 11   4    3.5   2.9
7 13   11   4.6   0.2

假设我想组合将3,4加在一起的值(总和),并且还将行6,7分别以相同的方式组合(即总和)。我怎样才能在熊猫中实现这一目标?

2 个答案:

答案 0 :(得分:1)

要对特定行求和,您可以使用df.iloc

res1 = df.iloc[[3, 4], :].sum()

# Col1    26.0
# Col2    12.0
# Col3     9.3
# Col4     1.3
# dtype: float64

res2 = df.iloc[[6, 7], :].sum()

# Col1    24.0
# Col2    15.0
# Col3     8.1
# Col4     3.1
# dtype: float64

如果您要“合并”它们,即删除原始行并添加新行,则使用df.append

df = df.drop([3, 4, 6, 7], axis=0)\
       .append(res1, ignore_index=True)\
       .append(res2, ignore_index=True)

#    Col1  Col2  Col3  Col4
# 0  11.0  13.0   5.5   0.9
# 1  14.0   6.0   3.1   0.7
# 2  18.0   7.0   5.5   0.1
# 3  15.0   3.0   6.9   2.7
# 4  26.0  12.0   9.3   1.3
# 5  24.0  15.0   8.1   3.1

答案 1 :(得分:0)

#create empty columns. You could also replace the original columns

row['sum1'] = np.nan
row['sum2'] = np.nan  
def sum_rows(row):
    row['sum1'] = row['Col3'] + row['Col4']
    row['sum2'] = row['Col5'] + row['Col6']
    return row
df = df.apply(sum_rows,axis=1)

这是一种快速的方法。