gpt4 book ai didi

python - 从单个 csv 文件读取两个完整不同的数据帧

转载 作者:行者123 更新时间:2023-12-01 08:00:11 25 4
gpt4 key购买 nike

基本上无法读取单个 csv 文件的所有内容。csv 文件的前几行包含 7 列。文件的其余部分包含 13 列。我可以在不同的时间分别阅读它们,但我想知道是否有办法可以立即阅读它们。 csv文件的一些照片; (注意:您可以忽略为第一个数据帧创建的 nan,它们将不需要(仅使用第一行),我只是在此处展示了它们以获取完整的概述) enter image description here

enter image description here

enter image description here

现在,我尝试使用 pandas read_csv两次,但要么给出错误,要么文件未正确读取。 IE。如果我首先使用 pandas 读取第一个数据帧,第二次读取第二个数据帧时,它将跳过前几行。 IE。数据框的“日期(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')

如果我反过来做,例如。 df2df1 之前首先阅读,它将给出 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 = '\t',usecols=cols)

我的数据的一些样本; https://drive.google.com/drive/folders/15PwpWIh13tyOyzFUTiE9LgrxUMm-9gh6?usp=sharing

最佳答案

这是可能的,但如果想要默认情况下正确设置列的类型,那么在 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 个 DataFrame 创建 2 个列表,但再次获取所有字符串 - 需要将每列转换为整数或 float ,或者如果需要的话转换为日期时间。

<小时/>
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

关于python - 从单个 csv 文件读取两个完整不同的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55773063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com