Python pandas dataframe to_csv使用NaN而不是重复值

时间:2018-03-08 23:20:57

标签: python pandas csv

我有一个标题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我需要做些什么才能让它看起来那样?

备注。

h1h2h3d1d2d3可能会有重复的值。

k上不会重复

df_h

1 个答案:

答案 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()