pandas 创建一个数据框列,其中每个单元格包含具有特定特征的所有值的总和

1rhkuytd  于 2023-02-27  发布在  其他
关注(0)|答案(3)|浏览(138)

我有两只Pandas的数据框,说:

df1 = pd.DataFrame({"Type": [A, A, B, B, C], "data": [1,2,3,4,5]}) 

        Type  data
    0     A     1
    1     A     2
    2     B     3
    3     B     4
    4     C     5
df2 = pd.DataFrame({"Type": [A, B, C]}) 

        Type 
    0     A 
    1     B
    2     C

我想将一列与df2相邻,比如“Value”,这样Value中的每个单元格都有df1["Col2"]中属于同一类型的所有元素的总和。
对于此特定示例,所需输出如下所示:

Type  data
    0     A     3
    1     B     7
    2     C     5

我很想为df2["Type"]中的每个x使用一个while,然后添加所有df1[df1["Type"] == x]["data"],但这似乎不像是正确的形式。
我怎样才能达到这个理想的输出?

jxct1oxe

jxct1oxe1#

您的方法将取决于df1和df2中的内容。

    • 所有类型都在两个数据框中:**

假设类型A、B和C是唯一可用的类型,您可以使用一个简单的groupby函数来接收每种类型的总和。

df1.groupby(by='Type',as_index=False).sum()
Type  data
0    A     3
1    B     7
2    C     5
    • 两个数据框包含不同的类型:**

如果df1具有df2没有的类型(反之亦然),则可以对两个 Dataframe 执行merge操作,然后对合并后的 Dataframe 使用groupby函数。
一个二个一个一个

jq6vz3qz

jq6vz3qz2#

Type列合并分组:

df1.merge(df2, on='Type').groupby('Type').sum().reset_index()
Type  data
0    A     3
1    B     7
2    C     5
vojdkbi0

vojdkbi03#

import pandas as pd

df1 = pd.DataFrame({"Type": ['A', 'A', 'B', 'B', 'C'], "data": [1,2,3,4,5]}) 
df2 = pd.DataFrame({"Type": ['A', 'B', 'C']}) 

df1['cumsum'] = df1.groupby('Type').agg({'data':'cumsum'})
df2['data'] = (df1.drop_duplicates(subset=['Type'], keep='last'))['cumsum'].reset_index(drop=True)

print(df2)
Type  data
0    A     3
1    B     7
2    C     5

相关问题