pandas 合并列的重复单元格

o4hqfura  于 2023-08-01  发布在  其他
关注(0)|答案(3)|浏览(180)

我的当前excel如下:

----------------
  |  Type |  Val |
  |--------------|
  |  A    |  1   |
  |--------------|     
  |  A    |  2   |     
  |--------------|
  |  B    |  3   |
  |--------------|     
  |  B    |  4   |     
  |--------------|     
  |  B    |  5   |
  |--------------|
  |  C    |  6   |

字符串

此为必填excel:

----------------------
  |  Type |  Val | Sum |
  |--------------------|
  |  A    |  1   | 3   |
  |       |------|     |
  |       |  2   |     |
  |--------------------|
  |  B    |  3   | 12  |
  |       |------|     |
  |       |  4   |     |
  |       |------|     |
  |       |  5   |     |
  |--------------------|
  |  C    |  6   |  6  |
  ----------------------


在Python中是否可以使用Pandas或任何其他模块?

23c0lvtd

23c0lvtd1#

IIUC用途:

df['Sum']=df.groupby('Type').transform('sum')
df.loc[df[['Type','Sum']].duplicated(),['Type','Sum']]=''
print(df)

个字符
P.S.:你也可以把它添加为index:

df=df.set_index(['Type','Sum']) #export to excel without index=False


的数据

tyu7yeag

tyu7yeag2#

对于合并的前2个级别,可以将所有3列设置为MultiIndex-仅列的顺序不同:

#specify column name after groupby
df['Sum'] = df.groupby('Type')['Val'].transform('sum')

df = df.set_index(['Type','Sum', 'Val'])
df.to_excel('file.xlsx')

字符串
但在我看来,最好的方法是使用重复的值:

df['Sum'] = df.groupby('Type')['Val'].transform('sum')
print (df)

  Type  Val  Sum
0    A    1    3
1    A    2    3
2    B    3   12
3    B    4   12
4    B    5   12
5    C    6    6

df.to_excel('file.xlsx', index=False)

whlutmcx

whlutmcx3#

你可以用

import pandas as pd

df = pd.DataFrame({'Type': ['A', 'A','B','B','B','C'], 'Val': [1,2 ,3,4,5,6]})

df_result = df.merge(df.groupby(by='Type', as_index=False).agg({'Val':'sum'}).rename(columns={'Val':'Sum'}), on = 'Type')

字符串
其给出的输出为

print(df_result)
  Type  Val  Sum
0    A    1    3
1    A    2    3
2    B    3   12
3    B    4   12
4    B    5   12
5    C    6    6


这就是你要找的吗?

相关问题