我正在研究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来执行agg:
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
有人告诉我该怎么做? 非常感谢 番
答案 0 :(得分:3)
如果您需要保存为CSV,则可以使用此方法修复显示屏,然后再进行保存。
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')
声明;如果你除了保存之外还做了什么,请事先不运行它。
答案 1 :(得分:3)
简单地,
#reseting the index
m = m.sort_index().reset_index()
#masking duplicated value with empty
m['id']=m['id'].mask(m['id'].duplicated(),"")
#writing dataframe to a csv file
m.to_csv("output.csv",index=False)