文件是一种类似 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 dataframe 并获得所需的输出?
最佳答案
灵活的换档:
df = pd.read_csv(filename, sep='\s+/\s+|,', skipinitialspace=True)
df = df.apply(lambda s: s.shift(1), 1).apply(lambda s: s.shift(-1) if pd.isna(s[-1]) else s, 1)
df['start_date'].fillna(method='ffill', inplace=True)
df = df.dropna().reset_index(drop=True)
生成的df
:
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
关于python - 将文件读入 Pandas 数据框中,其中行按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57230552/