亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas read_csv 不讀取文件(while 循環)

Pandas read_csv 不讀取文件(while 循環)

慕無忌1623718 2023-06-27 13:24:21
我正在嘗試閱讀我存儲在電腦上的幾張(~30)csv 表。i=2Liste1 = []Liste2 = []x = 0while i < 32:    string = str(i)    if i < 10:        try:            Name = 'D:\\FTPDaten\\2020\\Alle\\2020010'+string+'.csv'            Tabelle = pd.read_csv(Name, sep=';', decimal=",", header=0, usecols=[7, 20])            Tabelle.columns = ['AC', 'DC']            neueTabelle1 = Tabelle['AC']            neueTabelle = Tabelle['DC']            Schleifenlaenge = len(neueTabelle)            j = 0            del(Tabelle)            while j < Schleifenlaenge:                Datenwert1 = neueTabelle.iloc[j]                Datenwert2 = neueTabelle1.iloc[j]                Liste1.append(Datenwert1)                Liste2.append(Datenwert2)                j = j + 1        except FileNotFoundError:            i=i+1    elif i >= 10 and i < 32:        try:            Name = 'D:\\FTPDaten\\2020\\Alle\\202001' + string + '.csv'            Tabelle = pd.read_csv(Name, sep=';', decimal=",", header=0, usecols=[7, 20])            Tabelle.columns = ['AC', 'DC']            neueTabelle1 = Tabelle['AC']            neueTabelle = Tabelle['DC']            Schleifenlaenge = len(neueTabelle)            j = 0                        while j < Schleifenlaenge:                Datenwert1 = neueTabelle1.iloc[j]                Datenwert2 = neueTabelle.iloc[j]                Liste1.append(Datenwert1)                Liste2.append(Datenwert2)                j = j + 1        except FileNotFoundError:            i = i+1    i = i + 1當 while 循環第一次運行時,一切正常。當進入第一次迭代時,read_csv 不會像以前那樣讀取文件。我希望得到一個存儲第 7 列和第 20 列的 DataFrame。但我確實得到了一個完全沒有內容的 DataFrame - 只有標題。我嘗試了很多,但肯定無法修復它。
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

問題在于它如何讀取';'其他文件(第一個文件除外)。如果你用 Excel 打開它們,你也許就能明白我在說什么。因此,您需要做的是跳過文件開頭的那些行。


import pandas as pd


Liste1 = []

Liste2 = []


for i in range(2,32):

    skipRows = 7

    if i != 2:

        skipRows += 1

    if i < 10:

        try:

            Name = 'D:\\FTPDaten\\2020\\Alle\\2020010{string}.csv'.format(string=i)

            Tabelle = pd.read_csv(Name, sep=';', decimal=",", header=0, usecols=[7, 20], skiprows=skipRows)

            Tabelle.columns = ['AC', 'DC']

 

            if i < 10:

                Datenwert1 = list(Tabelle['DC'])

                Datenwert2 = list(Tabelle['AC'])

            elif i >= 10 and i < 32:

                Datenwert1 = list(Tabelle['AC'])

                Datenwert2 = list(Tabelle['DC'])

                

            Liste1 += Datenwert1

            Liste2 += Datenwert2

        except FileNotFoundError as e:

            print(e)


df = pd.DataFrame({'col1':Datenwert1,   #<-- change 'col1', 'col2' to whatever you want to name them

                   'col2':Datenwert2})


查看完整回答
反對 回復 2023-06-27
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

嘗試在此處創建一個新的數據框,而不是迭代現有的數據框


cols = ['AC', 'DC']

new_Tabelle = pd.DataFrame(columns = cols)

new_Tabelle['AC']=Tabelle['AC']

new_Tabelle['DC']=Tabelle['DC']


查看完整回答
反對 回復 2023-06-27
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

我沒有 30 個分號分隔的文件。然而,這可以很容易地簡化為僅拾取存在并匹配模式的文件,使用glob


import pandas as pd

from pathlib import Path

import random


for i in range(30):

    with open(f"2020010_os_{i}.csv", "w") as fp: fp.write(f"id;val\n{i};{random.randint(10,20)}\n")

        

pd.concat([pd.read_csv(fn, sep=";") for fn in Path().cwd().glob("2020010*.csv")])


查看完整回答
反對 回復 2023-06-27
  • 3 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號