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列中的新值。您能帮我这样做吗?