从单个csv文件中读取两个完整的不同数据帧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从单个csv文件中读取两个完整的不同数据帧相关的知识,希望对你有一定的参考价值。
基本上无法读取单个csv文件的所有内容。 csv文件的前几行包含7列。文件的其余部分包含13列。我可以在不同的时间单独阅读它们,但我想知道是否有一种方法可以立刻阅读它们。一些csv文件的照片; (注意:你可以忽略为第一个数据帧创建的nans,它们不需要它们(只使用第一行),我只是在这里展示它们以获得完整的概述)
现在,我已经尝试过两次使用pandas read_csv
,但是会出错,或者文件没有正确读取。即。如果我首先使用pandas读取第一个数据帧,第二次读取第二个数据帧时,它会跳过前几行。即。数据框将有一个“日期(NZST)”,盯着大约1940年而不是1910年,如图所示。例如。
df1 = pd.read_csv(file,skiprows = 2, nrows = 1, delimiter = ' ',header = None)
df2 = pd.read_csv(file,skiprows = 8,delimiter = ' ')
如果我这样做,反过来,例如。 df2
在df1
之前首次阅读,当我阅读EmptyDataError: No columns to parse from file
时它会给df1
- 我错了,因为它暗示这可以修复(也许),如果我以某种方式重置读者,但我一直在无休止地搜索,但似乎无法找到一种方法。
- 我还在考虑只阅读7列,因为其余的列无论如何都不需要;或者既不冷也不行
cols = list(range(0,7))
cols = [0,1,2,3,4,5,6,7]
df1 = pd.read_csv(file,skiprows = 2,delimiter = ' ',usecols=cols)
我的数据的一些样本; https://drive.google.com/drive/folders/15PwpWIh13tyOyzFUTiE9LgrxUMm-9gh6?usp=sharing
有可能,但是如果想要正确设置qazxsw poi of columns,那么在pandas中读取文件仍然更好/更简单 - 不是所有列到字符串:
types
另一个解决方案应该是逐行读取并为2个DataFrame创建2个列表,但是再次获取所有字符串 - 需要将每个列转换为整数或浮点数,或者如果需要将日期时间转换为。
r = [0,1,3,4,5,6,7]
df2 = pd.read_csv(file,skiprows = r, delimiter = ' ',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
以上是关于从单个csv文件中读取两个完整的不同数据帧的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 R 中的原始文件名将包含多个数据帧的大列表保存为单个 csv
Pandas:使用循环和分层索引将多个 csv 文件导入数据帧
是否可以以相同或不同的顺序将具有相同标题或标题子集的多个 csv 文件读取到 spark 数据帧中?
使用分块将 CSV 文件读入 Pandas 数据帧,生成单个目标数据帧