难以使用合并功能

时间:2019-04-22 07:48:46

标签: python pandas csv

.merge() Pandas函数出现语法错误。

我在做什么错,我该如何解决?

下面是我的代码段;

df2 = df2.merge(df1[list('col1','col2'], on ='ABC')

5 个答案:

答案 0 :(得分:1)

您需要为此使用字符串格式:

>>> for n in (9, 99, 999, 9999):
...     print(f"{n:0>4}")
... 
0009
0099
0999
9999

答案 1 :(得分:1)

str.zfill(x)会将x零放在任何字符串之前

如果您想使用字符串格式,f'{str:0x}'也可以使用。

P.S。不要命名您的字符串str,因为它会使str类重载

答案 2 :(得分:0)

您将不得不将其视为字符串值,因为数字值不能包含前导零。要创建长度为4的0填充字符串,您可以执行以下操作:

v = 4
print("{:04d}".format(v))

或更旧的样式:

v = 4
print("%04d" % v)

两种方式的结果:

0004

答案 3 :(得分:0)

字符串格式就是答案。

print('%04d' % 4)
0004
print('%04d' % 43)
0043

答案 4 :(得分:0)

使用str.zfill(width)

  

zfill()方法用零填充左侧的字符串以填充宽度。

     

宽度-这是字符串的最终宽度。这是我们的宽度   填零后会得到。

id = [6, 77, 888, 9999]
print([str(x).zfill(4) for x in id])

输出

['0006', '0077', '0888', '9999']

编辑

要使用列表理解转换列中的列值:

import pandas as pd

df = pd.DataFrame({'un-padded':[6, 77, 888, 9999]})
df['padded'] = [str(x).zfill(4) for x in df['un-padded']]
print(df)

输出

   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   9999