读取pandas datafram中具有可变列的文本文件

2024-06-14 00:04:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的文本文件:

MAX_POWER   SPEED   ETDWPNO ETAWPNO OPTIMIZED   BUDGET
100 20.0    000 000 MaxSpeed    00000000.00
ETD_YEAR    ETD_MONTH   ETD_DAY ETD_HOUR    ETD_MINUTE  ETA_YEAR    ETA_MONTH   ETA_DAY         ETA_HOUR    ETA_MINUTE
2013    03  03  08  00  2013    03  03  08  00
NAME    LAT LON LEG_TYPE    TURN_RADIUS CHN_LIMIT   PLANNED_SPEED   SPEED_MIN           SPEED_MAX   COURSE  LENGTH      DO_PLAN HFO_PLAN    HFO_LEFT    DO_LEFT ETA_DAY ETA_TIME
BERTH   34 28.343 N 133 27.147 E    RHUMBLINE   00.8    00185   000.0   000.0   000.0   000.0   00000.00    00000.0 00000.0 00000   00000   0000.00.00  00:00
CHANNEL 34 28.005 N 133 26.887 E    RHUMBLINE   00.3    00110   006.0   000.0   012.5   212.5   00000.32    00000.0 00000.0 00000   00000   0000.00.00  00:00
FAIRWAY     34 22.671 N 133 26.773 E    RHUMBLINE   00.3    00100   008.0   000.0   012.5   181.0   00005.35    00000.0 00000.0 00000   00000   0000.00.00  00:00
HAKAMA S    34 21.016 N 133 27.444 E    RHUMBLINE   00.3    00231   011.3   000.0   012.5   161.4   00001.74    00000.0 00000.0 00000   00000   0000.00.00  00:00
MU SHIMA    34 17.485 N 133 30.836 E    RHUMBLINE   00.3    00231   011.3   000.0   012.5   141.4   00004.41    00000.0 00000.0 00000   00000   0000.00.00  00:00
BISAN SE    34 17.571 N 133 37.128 E    RHUMBLINE   00.3    00233   011.3   000.0   012.5   089.1   00005.34    00000.0 00000.0 00000   00000   0000.00.00  00:00
BISAN SE    34 17.557 N 133 40.198 E    RHUMBLINE   00.3    00231   011.3   000.0   012.5   090.3   00002.45    00000.0 00000.0 00000   00000   0000.00.00  00:00
BISAN SE    34 18.594 N 133 42.000 E    RHUMBLINE   00.3    00231   011.3   000.0   012.5   055.3   00001.89    00000.0 00000.0 00000   00000   0000.00.00  00:00
BISAN SE    34 20.873 N 133 47.007 E    RHUMBLINE   00.3    00231   011.3   000.0   012.5   061.2   00004.74    00000.0 00000.0 00000   00000   0000.00.00  00:00

读取此文件时:

^{pr2}$

我有个错误:

ParserError: Expected 12 fields in line 5, saw 20

我试着跳过第四排,但我不想第一排。在

我不想跳过任何一行。在

这些都可以用来根据列数创建一个或多个数据帧吗?在

有人能帮我吗?在

任何帮助都将不胜感激。在


Tags: yeardomaxhfoetaspeedseday
1条回答
网友
1楼 · 发布于 2024-06-14 00:04:25

以下是解决方案的开始:

df = pd.read_csv("file.csv", sep="\t", header=None, engine='python', names=['col' + str(x) for x in range(30) ])

{1>你需要一个大于或等于最小值的选项。我从cols0到cols29选择了30列。。但是为了避免错误,你可以选择100个或更多

在第一个命令的末尾添加函数之后,可以删除所有用NaN填充的列:

^{pr2}$

这是我看到的唯一的解决方案来读取pandas dataframe中具有可变列的文本文件

之后,您可以处理数据帧并搜索所需的行

结果:

         col0       col1     col2      col3  ... col17 col18       col19  col20
0   MAX_POWER      SPEED  ETDWPNO   ETAWPNO  ...   NaN   NaN        None   None
1         100       20.0      000       000  ...   NaN   NaN        None   None
2    ETD_YEAR  ETD_MONTH  ETD_DAY  ETD_HOUR  ...   NaN   NaN        None   None
3        2013         03       03        08  ...   NaN   NaN        None   None
4        NAME        LAT      LON  LEG_TYPE  ...   NaN   NaN        None   None
5       BERTH         34   28.343         N  ...   0.0   0.0  0000.00.00  00:00
6     CHANNEL         34   28.005         N  ...   0.0   0.0  0000.00.00  00:00
7     FAIRWAY         34   22.671         N  ...   0.0   0.0  0000.00.00  00:00
8    HAKAMA S         34   21.016         N  ...   0.0   0.0  0000.00.00  00:00
9    MU SHIMA         34   17.485         N  ...   0.0   0.0  0000.00.00  00:00
10   BISAN SE         34   17.571         N  ...   0.0   0.0  0000.00.00  00:00
11   BISAN SE         34   17.557         N  ...   0.0   0.0  0000.00.00  00:00
12   BISAN SE         34   18.594         N  ...   0.0   0.0  0000.00.00  00:00
13   BISAN SE         34   20.873         N  ...   0.0   0.0  0000.00.00  00:00

相关问题 更多 >