我的原始文件中有 6 行 但是当我使用 pandas 和 for 循环运行脚本时,它只读取前 4 行 当我尝试打印(原始形状)时,它显示了正确的行数/6 行
original=pd.read_csv('csv1.csv')
new=pd.read_csv('csv2.csv')
rn=0
for row in original:
new.loc[rn,'listid']=int(original.loc[rn,'listid'])**3
new.loc[rn,'name']=original.loc[rn,'name']
new.loc[rn,'country']=original.loc[rn,'country']
dateinput=original.loc[rn,'dob']
if date_matchingdob(dateinput) == True:
new.loc[rn,'dob']=datetime.strptime(dateinput, '%d/%m/%Y').strftime('%Y%m%d')
elif date_matchingyob(dateinput) == True:
new.loc[rn,'yearofbirth']=dateinput
new.to_csv('csv2.csv', index=False)
rn+=1
print(new)
我尝试使用 for 循环打印行
for row in original:
print(rn)
rn+=1
it only print 0,1,2,3 so only 4 rows are being read.
looks like because there's only 4column in the file. how do i make the for loop to read the row instead of column?
答案 0 :(得分:0)
我通过添加原始 csv 的计数并在 for 循环中运行它来解决此问题 我不确定是否有其他方法可以解决此问题?
original=pd.read_csv('csv1.csv')
new=pd.read_csv('csv2.csv')
csvoriginal=csv.reader(open('csv1.csv'))
count=len(list(csvoriginal))
rn=0
id=0
for sub in range(1,count):
dateinput=str(original.loc[rn,'dob'])
id=id+1
if date_matchingdob(dateinput) == True:
new.loc[rn,'dob']=datetime.strptime(dateinput, '%d/%m/%Y').strftime('%Y%m%d')
elif date_matchingyob(dateinput) == True:
new.loc[rn,'yearofbirth']=str(dateinput)
new.loc[rn,'id']=str(id)
new.loc[rn,'name']=original.loc[rn,'name']
new.loc[rn,'country']=original.loc[rn,'country']
rn+=1
new.to_csv('csv2.csv', index=False)
print(new)