for 循环没有读取我的 csv 文件中的所有行

时间:2021-05-24 03:46:24

标签: python pandas

我的原始文件中有 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?

1 个答案:

答案 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)