我知道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分别以相同的方式组合(即总和)。我怎样才能在熊猫中实现这一目标?
答案 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)
这是一种快速的方法。