我有一个标题DataFrame df_h
df_h = pd.DataFrame({'k':[1,2],'h1':['a','d'],'h2':['b','e'],'h3':['c','f']})
k h1 h2 h3
0 1 a b c
2 2 d e f
和详情DataFrame df_d
df_d = pd.DataFrame({'k':[1,1,2,2],'d1':[10,11,12,13],'d2':[20,21,22,23],'d3':[30,31,32,33]})
k d1 d2 d3
0 1 10 20 30
1 1 11 21 31
2 2 12 22 32
3 2 13 23 33
然后我在df
k
加入了他们
df = df_h.merge(df_d, how='left', on='k')
k h1 h2 h3 d1 d2 d3
0 1 a b c 10 20 30
1 1 a b c 11 21 31
2 2 d e f 12 22 32
2 2 d e f 13 23 33
我想要to_csv
,但我需要以这种方式结束:
k h1 h2 h3 d1 d2 d3
0 1 a b c 10 20 30
1 11 21 31
2 2 d e f 12 22 32
2 13 23 33
没有重复df_h
行。
to_csv
上是否有选项,或df
我需要做些什么才能让它看起来那样?
备注。
h1
,h2
,h3
,d1
,d2
或d3
可能会有重复的值。
k
上不会重复 df_h
。
答案 0 :(得分:3)
根据您的结果,您可以使用pd.DataFrame.duplicated
应用您的面具和.loc
访问者进行更新:
cols = ['k', 'h1', 'h2', 'h3']
df.loc[df.duplicated(cols), cols] = ''
# k h1 h2 h3 d1 d2 d3
# 0 1 a b c 10 20 30
# 1 11 21 31
# 2 2 d e f 12 22 32
# 2 13 23 33
然后正常使用df.to_csv()
。