我可以在单个列上对 Pandas 数据帧中的多行求和吗?(并将它们合并到数据框中的单个行中)



假设我有一个包含 -

<pre>
<table>
<tr>
<th scope='column'>Fruit</ th>
<th scope='column'>Address</ th>
<th scope='column'>Quantity</ th>
</ tr>
<br>
<tr>
<td>Banana</ td>
<td>Baker Street</ td>
<td>10</ td>
</ tr>
<br>
<tr>
<td>Banana</ td>
<td>Baker Street</ td>
<td>20</ td>
</ tr>
<br>
<tr>
<td>Banana</ td>
<td>Nautilus</ td>
<td>10</ td>
</ tr>
</ table>
</ pre>

我想要一个包含 -

<pre>
<table>
<tr>
<th scope='column'>Fruit</ th>
<th scope='column'>Address</ th>
<th scope='column'>Quantity</ th>
</ tr>
<br>
<tr>
<td>Banana</ td>
<td>Baker Street</ td>
<td>30</ td>
</ tr>
<br>
<tr>
<td>Banana</ td>
<td>Nautilus</ td>
<td>10</ td>
</ tr>
</ table>
</ pre>

有没有简洁的方法可以做到这一点?从本质上讲,我想在最后一个唯一列上对一个包含所有公共列的表求和。

我认为您正在寻找按总和分组,即

如果你有一个类似

columns = ['Fruit','Address','Quality']
df = pd.DataFrame([['Banana','Baker Street',10],['Banana','Baker Street',20],['Banana','Nautilus',10]],columns = columns)
水果地址质量 0香蕉贝克街10号 香蕉贝克街 20 号 1 号 2 香蕉鹦鹉螺 10

分组按总和与reset_index将给出

new_df = df.groupby(['Fruit','Address'])['Quality'].sum().reset_index()
水果地址质量 0香蕉贝克街30号 1 香蕉鹦鹉螺 10

你也可以使用as_index = False

new_df = df.groupby(['Fruit','Address'],as_index=False)['Quality'].sum()

希望对你有帮助

最新更新