将文件读入Pandas数据框,其中按日期对行进行分组

阿里汉·Ja那

文件是类似于CSV的格式,其中按日期对行进行分组,而包含除日期以外的信息的行中将省略日期信息。可以通过在其标题行中包含“ /”字符来识别此类格式。

start_date / lat,lon,tmax
1979-01-01
27,261,10.522
27,262,11.772
28,261,9.205
1979-01-02
27,261,10.139
27,262,10.913
28,261,8.982

当前使用以下代码:

import numpy as np
import pandas as pd
pd.read_csv(fileName, delimiter = ',')

这给出了输出

    start_date / lat    lon tmax
0   1979-01-01  NaN NaN
1   27  261.0   10.522
2   27  262.0   11.772
3   28  261.0   9.205
4   1979-01-02  NaN NaN
5   27  261.0   10.139
6   27  262.0   10.913
7   28  261.0   8.982

所需的输出。

    start_date    lat    lon    tmax
0   1979-01-01    27    261.0   10.522
1   1979-01-01    27    262.0   11.772
2   1979-01-01    28    261.0   9.205
3   1979-01-02    27    261.0   10.139
4   1979-01-02    27    262.0   10.913
5   1979-01-02    28    261.0   8.982

如何将这样的文件读入pandas数据框并获得所需的输出?

崖咀嚼

我的感觉是,由于数据的性质,大熊猫可能没有直接的方式将数据加载到所需的结果。如果是我,这就是我将如何处理您的情况。

  1. 我将按照您的要求加载文件。
  2. 重命名这些列以适合您的最终表结果。
  3. 使用pd.to_datetime函数保留日期并清除所有非日期数据。这将是您的最终日期列。
  4. 使用fillna方法填充日期上所有缺少的值。

附带的是我根据上述逻辑编写的代码。

df = pd.read_csv('test.txt')
df['lat'] = df['start_date / lat']
df.columns = ['start_date', 'lon', 'tmax', 'lat']
df['start_date'] = pd.to_datetime(df['start_date'], errors='coerce')
df['start_date'] = df['start_date'].fillna(method='ffill')
df[df['lon'].notnull()]

我复制了您的数据,并在本地创建了test.txt以复制您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章