[英]Reading two Complete different dataframes from a single csv file
基本上無法讀取單個 csv 文件的所有內容。 csv 文件的前幾行包含 7 列。文件的其余部分包含 13 列。 我可以在不同的時間分別閱讀它們,但我想知道是否有一種方法可以同時閱讀它們。 csv文件的一些照片; (注意:您可以忽略為第一個數據幀創建的 nan,不需要它們(僅使用第一行),我只是在此處展示它們以獲得完整概述)
現在,我已經嘗試使用 pandas read_csv
兩次,但要么會出錯,要么無法正確讀取文件。 IE。 如果我首先使用 Pandas 讀取第一個數據幀,第二次讀取第二個數據幀時,它會跳過前幾行。 IE。 數據框將有一個“Date(NZST)”,它盯着 1940 年左右,而不是如圖所示的 1910 年。 例如。
df1 = pd.read_csv(file,skiprows = 2, nrows = 1, delimiter = '\t',header = None)
df2 = pd.read_csv(file,skiprows = 8,delimiter = '\t')
如果我反過來做,例如。 df2
在df1
之前首先讀取,它會給出一個EmptyDataError: No columns to parse from file
當我讀取df1
時EmptyDataError: No columns to parse from file
我從錯誤中思考,因為它表明這可以修復(也許),如果我以某種方式重置閱讀器,但我一直在無休止地搜索,但似乎無法找到方法。
我也想只閱讀 7 列,因為無論如何都不需要其他列,即; 下面的列都不起作用
cols = list(range(0,7))
cols = [0,1,2,3,4,5,6,7]
df1 = pd.read_csv(file,skiprows = 2,delimiter = '\t',usecols=cols)
我的一些數據樣本; https://drive.google.com/drive/folders/15PwpWIh13tyOyzFUTiE9LgrxUMm-9gh6?usp=sharing
這是可能的,但如果默認情況下想要正確設置列types
,則更好/更簡單地在 Pandas 中讀取文件兩次 - 並非所有列都為字符串:
r = [0,1,3,4,5,6,7]
df2 = pd.read_csv(file,skiprows = r, delimiter = '\t',header = None, names=range(13))
print (df2.head())
0 1 2 3 4 5 \
0 Woodhill Forest 1402 A64741 -36.749 174.431 30
1 Station Date(NZST) Time(NZST) Tmax(C) Period(Hrs) Tmin(C)
2 -36.7490, 174.4310 1951 01 01 09:00 - - 17.8
3 -36.7490, 174.4310 1951 01 02 09:00 24.9 24 15.6
4 -36.7490, 174.4310 1951 01 03 09:00 17.2 24 12.7
6 7 8 9 10 11 12
0 G NaN NaN NaN NaN NaN NaN
1 Period(Hrs) Tgmin(C) Period(Hrs) Tmean(C) RHmean(%) Period(Hrs) Freq
2 24 - - - - - D
3 24 - - - - - D
4 24 - - - - - D
另一個解決方案應該是逐行讀取文件並為 2 個數據幀創建 2 個列表,但再次獲取所有字符串 - 需要將每列轉換為整數或浮點數,或者如有必要轉換為日期時間。
file = 'wgenf - 2019-04-20T204905.009.genform1_proc'
df1 = pd.read_csv(file,skiprows = 2, nrows = 1, delimiter = '\t',header = None)
df2 = pd.read_csv(file,skiprows = 8,delimiter = '\t', na_values=['-'])
print (df1.dtypes)
0 object
1 int64
2 object
3 float64
4 float64
5 int64
6 object
7 float64
dtype: object
print (df2.dtypes)
Station object
Date(NZST) object
Time(NZST) object
Tmax(C) float64
Period(Hrs) float64
Tmin(C) float64
Period(Hrs).1 float64
Tgmin(C) float64
Period(Hrs).2 float64
Tmean(C) float64
RHmean(%) float64
Period(Hrs).3 float64
Freq object
dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.