我正试图从一个.data
文件创建一个格式不是很好的数据帧。
以下是原始文本数据:
FICHE CLIMATOLOGIQUE;
;
Statistiques 1981-2010 et records;
PARIS-MONTSOURIS (75) Indicatif : 75114001, alt : 75m, lat : 48°49'18"N, lon : 02°20'12"E;
Edité le : 18/12/2017 dans l'état de la base;
; Janv.; Févr.; Mars; Avril; Mai; Juin; Juil.; Août; Sept.; Oct.; Nov.; Déc.; Année;
La température la plus élevée (°C);
(Records établis sur la période du 01-06-1872 au 03-12-2017);
; 16.1; 21.4; 25.7; 30.2; 34.8; 37.6; 40.4; 39.5; 36.2; 28.9; 21.6; 17.1; 40.4;
Date ; 05-1999; 28-1960; 25-1955; 18-1949; 29-1944; 26-1947; 28-1947; 11-2003; 07-1895; 01-2011; 07-2015; 16-1989; 1947;
Température maximale (Moyenne en °C);
; 7.2; 8.3; 12.2; 15.6; 19.6; 22.7; 25.2; 25; 21.1; 16.3; 10.8; 7.5; 16;
Température moyenne (Moyenne en °C);
; 4.9; 5.6; 8.8; 11.5; 15.2; 18.3; 20.5; 20.3; 16.9; 13; 8.3; 5.5; 12.4;
Température minimale (Moyenne en °C);
; 2.7; 2.8; 5.3; 7.3; 10.9; 13.8; 15.8; 15.7; 12.7; 9.6; 5.8; 3.4; 8.9;
我的第一次尝试没有考虑除';'
之外的分隔符。我用了pd.read_table()
:
df = pd.read_table("./file.data", sep=';', index_col=0, skiprows=7, header=0, skip_blank_lines=True, skipinitialspace=True)
这是我得到的结果:
如您所见,几乎所有索引都被移位,创建空行,并将'NaN'作为实际包含所需数据的行的索引。
我认为这是由于一些分隔符看起来像这样:; ;
。
因此,我尝试为sep
参数提供一个匹配这两种情况的正则表达式,以确保使用python引擎:
df = pd.read_table("./file.data", sep=';(\s+;)?', index_col=0, skiprows=7, header=0, skip_blank_lines=True, skipinitialspace=True, engine='python')
但结果并不令人满意,正如你在下面看到的。(我只取了数据帧的一部分,但想法不变)。 我尝试了其他稍微不同的正则表达式,得到了类似的结果。你知道吗
所以我基本上希望将索引空行的标签移到下面的一行。我没有尝试直接修改文件以提高效率,因为我有大约1000个类似的文件要进入数据帧。出于同样的原因,我不能仅仅重命名索引,因为有些文件的行数不一样。 有没有办法用熊猫来做这个?谢谢。你知道吗
您可以在导入后进行操作:
输出:
相关问题 更多 >
编程相关推荐