我有一个熊猫数据框,其中有两列,第一个标题为“ Letters”的字母有两个字母(例如AB),另一个标题为“ Numbers”的数字是1到9999。现在,我要合并它们,以使具有“ Letters” = XY和“ Numbers” = 4的第一行变为XY0004,基本上确保了两个单元格都已合并,但数字单元格又添加了0个零。具有ZW和333的第2行将变为ZW0333。具有AB和1234的第3行将变为AB1234。我怎么做得好?
答案 0 :(得分:1)
使用熊猫astype
将int
转换为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发生变化,以包括一个新列。