Python-Pandas CSV使用值N第一个字符过滤列



我使用pandas csv处理一个巨大的csv文件,基本上我有一个python脚本,其中一些参数是筛选条件,其中一个是表示一系列数字的字符串(例如:83351828(,然后将结果导出到一个新的csv文件。我想做的是能够通过它的4个第一个字符来过滤这个列。

这是我的代码:

elif devicePool == '' and css == '' and dirNumber != '' and routePartition == '':
df = pd.concat(( [chunk[chunk['Directory Number 1'][0:4] == dirNumber] for chunk in pd.read_csv(sourceFile, iterator=True, chunksize=10**4)]))

正如你所看到的,我使用了"[0:4]",但它不起作用。

def main(argv):
inputfile = ''
outputfile = ''
devicePool = ''
css = ''
dirNumber = ''
routePartition = ''
try:
opts, args = getopt.getopt(argv,"hi:o:p:c:n:r:",["ifile=","ofile=", "dpool=", "css=", "dnumber=", "route="])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile> -p <devicepool> -c <CSS> -n <directorynumber> -r <routepartition>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile> -p <devicepool> -c <CSS> -n <directorynumber> -r <routepartition>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
elif opt in ("-p", "--dpool"):
devicePool = arg
elif opt in ("-c", "--css"):
css = arg
elif opt in ("-n", "--dnumber"):
dirNumber = arg
elif opt in ("-r", "--route"):
routePartition = arg
read_CSV(inputfile, outputfile, devicePool, css, dirNumber, routePartition)

以下是错误消息:

pandas.core.indexing.IndexingError:作为索引器提供的不可对齐布尔序列(布尔序列的索引和索引对象的索引不匹配(

我认为你需要用str索引来获取前4个字母,也应该省略0

chunk['Directory Number 1'].str[:4]

如果值不是字符串,则添加Series.astype:

chunk['Directory Number 1'].astype(str).str[:4]

最新更新