Skip to main content
 首页 » 编程设计

python之用 Pandas 中的空白替换重复值

2025年05月04日20JeffreyZhao

我正在处理 Pandas 数据框。 示例代码如下: ` 将 pandas 导入为 pd

df = pd.DataFrame( 
                  {'name1': ['A', 'C', 'A', 'B','C', 'D','D', 'C', 'A', 'B','C', 'A'],  
                   'name2': ['B', 'D', 'C', 'D','B','A','A', 'D', 'C', 'D','D','B'],  
                   'id': [1, 1, 1, 1, 1, 1,2, 2, 2, 2, 2, 2],  
                   'Value1': [1, 2, 3, 4, 5, 6, 0, 2, 4, 6, 3, 5],  
                   'Value2': [0, 2, 4, 6, 3, 5, 1, 2, 3, 4, 5, 6] 
                  }, 
                  columns=['name1','name2','id','Value1','Value2'])` 

我可以使用以下 groupby 进行聚合:

m = df.groupby(['id','name1',])['Value1'].sum() 

当我打印m时,会显示如下:

   id  name1 
    1   A        4 
        B        4 
        C        7 
        D        6 
    2   A        9 
        B        6 
        C        5 
        D        0 
    Name: Value1, dtype: int64 

当我将 m 写入 csv 文件时,它只会包含 value1,因为它是一个 pandas 系列。 使用这个系列,我想创建一个与下表

完全相同的数据框
  id name1  Value1 
  1     A      4 
  1     B      4 
  1     C      7 
  1     D      6 
  2     A      9 
  2     B      6 
  2     C      5 
  2     D      0 

有人告诉我该怎么做吗? 多谢 泽普

请您参考如下方法:

如果您需要保存为 CSV,这里有一个 hack 可以用来在保存之前修复显示。

m = m.sort_index().reset_index() 
m['id'] = m['id'].mask(m['id'].ne(m['id'].shift()).cumsum().duplicated(), '') 
 
print(m) 
  id name1  Value1 
0  1     A       4 
1        B       4 
2        C       7 
3        D       6 
4  2     A       9 
5        B       6 
6        C       5 
7        D       0 
 
m.to_csv('file.csv') 

免责声明;如果您除了保存之外还要做任何事情,请不要事先运行它。