【问题标题】:Sum the values of specific rows if the rows have same values in specific column如果行在特定列中具有相同的值,则对特定行的值求和
【发布时间】:2019-11-22 20:44:52
【问题描述】:

我有一个这样的数据框:

    a   b   c
12456   11  123.1
12678   19  345.67
13278   19  1235.345

或其他格式

<table>
    <tr>
        <td>12456</td>
        <td>11</td><td>123.1</td>
    </tr>
    <tr>
        <td>12678</td>
        <td>19</td><td>345.67</td>
    </tr>
    <tr>
        <td>13278</td>
        <td>19</td>
        <td>1235.345</td>
    </tr>
</table>

第一列是索引。如果第二列具有相同的值,我需要添加第三列的行并使其成为一个。你能建议我做点什么吗?以下是我尝试过但不起作用的方法

    a,b,c=df_addweight.iloc[:,0].values,df_addweight.iloc[:, 1].values,df_addweight.iloc[:, 3].values`
    for u,v,w, in zip(range(1,len(a)),range(1,len(b)),range(1,len(c))):
        if a[u]==a[u-1] and b[v]==b[v-1]:
            df_addweight['W']= c[w]+c[w-1]
        elif a[u]==a[u-1] and b[v]!=b[v-1]:
            df_addweight['W']=c[w]

【问题讨论】:

  • 请以更好的方式格式化您的问题
  • @Riccardo Bucco 如何格式化?
  • 你应该阅读这个:stackoverflow.com/help/formatting
  • @SampleTest 批准更改兄弟
  • 可以添加数据吗?

标签: python pandas dataframe


【解决方案1】:

使用熊猫

import pandas as pd

df = pd.read_csv("data.csv", delim_whitespace=True)

df
       a   b         c
0  12456  11   123.100
1  12678  19   345.670
2  13278  19  1235.345


df.groupby('b')['c'].sum()

输出:

b
11     123.100
19    1581.015
Name: c, dtype: float64

【讨论】:

  • 但是我不想添加所有的行。只有那些满足上面评论中提到的条件的行。比如如果索引和第二列值匹配,然后添加 else 保持不变相应地更新整个数据框
  • 如果a 列和b 列具有相同的值,您想添加这些值吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2019-08-11
  • 2021-12-30
  • 2022-11-20
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多