Python 使用合并函数的困难

Python 使用合并函数的困难,python,pandas,csv,Python,Pandas,Csv,我发现.merge()函数出现语法错误 我做错了什么?我该如何修复它 下面是我的代码片段 df2 = df2.merge(df1[list('col1','col2'], on ='ABC') 您必须将其视为字符串值,因为数值不能有前导零。要创建长度为4的0填充字符串,可以执行以下操作: v = 4 print("{:04d}".format(v)) 或旧款: v = 4 print("%04d" % v) 结果是: 0004 您必须将其视为字符串值,因为数值不能有前导零。要创建长度为4

我发现
.merge()
函数出现语法错误

我做错了什么?我该如何修复它

下面是我的代码片段

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

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

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

v = 4
print("%04d" % v)
结果是:

0004

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

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

v = 4
print("%04d" % v)
结果是:

0004

您需要使用字符串格式:

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

您需要使用字符串格式:

>>> 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(x)
会在任何字符串前加上x个零

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


注意:不要给字符串命名
str
,因为它会重载
str

字符串格式就是答案

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

字符串格式就是答案

print('%04d' % 4)
0004
print('%04d' % 43)
0043
使用:

方法zfill()在左边用零填充字符串以填充宽度

宽度− 这是字符串的最终宽度。这是我们需要的宽度 将在填充零后得到

输出

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   9999
编辑

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   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)
输出

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   9999
使用:

方法zfill()在左边用零填充字符串以填充宽度

宽度− 这是字符串的最终宽度。这是我们需要的宽度 将在填充零后得到

输出

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   9999
编辑

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   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)
输出

['0006', '0077', '0888', '9999']
   un-padded padded
0          6   0006
1         77   0077
2        888   0888
3       9999   9999

我认为这比字符串格式更为pythic,尤其是C样式格式。我认为这不太可读。我更喜欢新的字符串格式化样式,而不是旧的“C样式”。我认为这比字符串格式更为pythic,尤其是C样式格式。我认为这不太可读。与旧的“C样式”相比,我更喜欢新的字符串格式样式。我有一列包含数千个这样的ID,需要使用zfill()插入一个新列。我该怎么做?@Pradeep为它添加了一个编辑:)这是我的第一个python代码,所以我可能问的问题太傻了。导入csv时将open('example.csv')作为csvfile:readCSV=csv.reader(csvfile,分隔符=',')),将open('new_'+csvfile,'w')作为输出:writer=csv.writer(output,delimiter=','))writerow(next(reader)+['new column']在此之后,我需要使用zfill插入xyz列中的新值。您能帮我吗?我有一列包含数千个这样的ID,需要使用zfill()插入一个新列。我该怎么做?@Pradeep为它添加了一个编辑:)这是我的第一个python代码,所以我可能问得太傻了。导入csv时将open('example.csv')作为csvfile:readCSV=csv.reader(csvfile,分隔符=',')),将open('new_'+csvfile,'w')作为输出:writer=csv.writer(output,delimiter=','))writerow(next(reader)+['new column']在此之后,我需要使用zfill插入xyz列中的新值。您能帮我这样做吗?