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

标签 python pandas dataframe

我正在处理 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')

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

关于python - 用 Pandas 中的空白替换重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50732178/

相关文章:

python - 如何打印临时深度

python - 如何在 SoftLayer 中访问已删除的 VSI 数据

python - 如何格式化 pandas timedelta 对象?

python - JOIN python中公共(public)列上的两个数据框

r - 将多列合并为R中的一列

python - Pandas 相对时间轴

Python 数据框导出到带引号 (") 的 csv

python - 如何撤消 pandas 数据帧的时间序列转换?

python - 使用 python 将新列从列表 append 到 df

python - 如何对合法领域的文本文档进行分类