将合并的单元格保留在excel中,并将df粘贴到某些单元格和列中

时间:2018-09-17 08:09:56

标签: python excel pandas

我目前正在尝试用1填充空白单元格,并为这些单元格保留字符串值(例如S,R,G,B)。

我的数据源是一个具有以下内容的Excel文件。

原始数据:

Customer ID      1      2    3    4
0010                    R    G    G
                 S      A    A
0599             R                B
0442             A      B  

*请注意,0010是合并的单元格,而第1,2,3,4列未合并。

预期的输出数据

Customer ID      1     2    3    4
0010             1     R    G    G
 1               S     A    A    1
0599             R     1    1    B
0442             A     B    1    1

我想保留合并的“客户ID”。 有什么办法可以解决此问题? 我还可以将函数设置为仅应用于某些行和列吗? 还要将df粘贴回某些行和列?

当前代码:

data = pd.read_excel('path',header=0)
df = pd.DataFrame(data)

df= df.fillna(1)

df.to_excel('path', index=False)

1 个答案:

答案 0 :(得分:0)

尝试指定Customer ID字段为object。然后,这将导致空值显示为Nan。然后fillna()应该会按预期工作:

import pandas as pd

df = pd.read_excel('path.xlsx', header=0, dtype={'Customer ID':object})

print(df)
df = df.fillna('1')
print(df)

df.to_excel('path_out.xlsx', index=False)

这将显示:

  Customer ID    1    2    3    4
0        0010  NaN    R    G    G
1         NaN    S    A    A  NaN
2        0599    R  NaN  NaN    B
3        0442    A    B  NaN  NaN

  Customer ID  1  2  3  4
0        0010  1  R  G  G
1           1  S  A  A  1
2        0599  R  1  1  B
3        0442  A  B  1  1

如果Customer ID是合并的单元格,例如合并AB,则可以跳过合并列,如下所示:

df = pd.read_excel('path.xlsx', usecols="A,C:F", header=0, dtype={'Customer ID':object})