合并数据框的列,并用零填充空数字

时间:2019-04-08 18:04:37

标签: python python-3.x pandas

我有一个熊猫数据框,其中有两列,第一个标题为“ Letters”的字母有两个字母(例如AB),另一个标题为“ Numbers”的数字是1到9999。现在,我要合并它们,以使具有“ Letters” = XY和“ Numbers” = 4的第一行变为XY0004,基本上确保了两个单元格都已合并,但数字单元格又添加了0个零。具有ZW和333的第2行将变为ZW0333。具有AB和1234的第3行将变为AB1234。我怎么做得好?

2 个答案:

答案 0 :(得分:1)

使用熊猫astypeint转换为str,然后使用zfill添加前导零:

# Example dataframe
df = pd.DataFrame({'Letters':['AB', 'XY', 'ZW'],
                   'Numbers': [1234, 4, 333]})

print(df)
  Letters  Numbers
0      AB     1234
1      XY        4
2      ZW      333

df['Merged'] = df['Letters'] + df['Numbers'].astype(str).str.zfill(4)

print(df)
  Letters  Numbers  Merged
0      AB     1234  AB1234
1      XY        4  XY0004
2      ZW      333  ZW0333

编辑后,OP指出他将floats作为数值。
就像ChrisA建议的那样,使用以下命令:

df['Merged'] = df['Letters'] + df['Numbers'].astype(int).astype(str).str.zfill(4)

print(df)
  Letters  Numbers  Merged
0      AB   1234.0  AB1234
1      XY      4.0  XY0004
2      ZW    333.0  ZW0333

答案 1 :(得分:0)

尝试:

df['New Col'] = df.apply(lambda row: row['Letters'] + str(row['Numbers']).zfill(4), axis=1)

这将使您的DataFrame发生变化,以包括一个新列。