【发布时间】:2019-09-11 10:39:51
【问题描述】:
.merge() Pandas 函数出现语法错误。
我做错了什么,我该如何解决?
下面是我的代码的 sn-p;
df2 = df2.merge(df1[list('col1','col2'], on ='ABC')
【问题讨论】:
.merge() Pandas 函数出现语法错误。
我做错了什么,我该如何解决?
下面是我的代码的 sn-p;
df2 = df2.merge(df1[list('col1','col2'], on ='ABC')
【问题讨论】:
您需要为此使用字符串格式:
>>> for n in (9, 99, 999, 9999):
... print(f"{n:0>4}")
...
0009
0099
0999
9999
【讨论】:
str.zfill(x) 将在任何字符串前放置 x 个零
如果您更愿意使用字符串格式,f'{str:0x}' 也可以。
附:不要将字符串命名为 str,因为它会重载 str 类
【讨论】:
方法 zfill() 用零填充左侧的字符串以填充宽度。
width - 这是字符串的最终宽度。这是我们的宽度 填零后会得到。
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
【讨论】:
您必须将其视为字符串值,因为数值不能有前导零。要创建长度为 4 的 0 填充字符串,您可以这样做:
v = 4
print("{:04d}".format(v))
或旧样式:
v = 4
print("%04d" % v)
结果无论哪种方式:
0004
【讨论】:
字符串格式化就是答案。
print('%04d' % 4)
0004
print('%04d' % 43)
0043
【讨论】: