我目前有一个包含 AIS 数据('mmsi'、'date_time_utc'、'lon'、'lat'、'sog'、'cog'、'true_heading'、'nav_status'、' message_nr') 用于特定区域内的所有船只。但是,当我尝试使用 pandas 创建数据框时,我收到以下警告:
DtypeWarning: Columns (0,2,3,4,5,6,7,8) have mixed types.Specify dtype option on import or set low_memory=False.
exec(compiled, ns_globals, ns_locals)
并且创建了这个数据框:
<bound method NDFrame.sample of mmsi date_time_utc ... nav_status message_nr
0 219017214 2017-01-01 00:00:08 ... 0.0 1.0
1 219017214 2017-01-01 00:01:16 ... 0.0 1.0
2 219017214 2017-01-01 00:02:36 ... 0.0 1.0
3 219017214 2017-01-01 00:03:09 ... 0.0 1.0
4 219017214 2017-01-01 00:04:08 ... 0.0 1.0
... ... ... ... ...
42340918 636092728 2017-12-31 21:41:10 ... 0.0 1.0
42340919 636092728 2017-12-31 21:42:42 ... 0.0 1.0
42340920 636092728 2017-12-31 21:43:11 ... 0.0 1.0
42340921 636092728 2017-12-31 21:44:50 ... 0.0 1.0
42340922 636092728 2017-12-31 21:45:21 ... 0.0 1.0
[42340923 rows x 9 columns]>
此外,运行此代码时: dataGroup = df.sort_values(['mmsi']).groupby('mmsi')
发生以下打字机错误: '<' not supported between instances of 'int' and 'str'
我尝试过的是: 奔跑
for column in df.columns:
print(pd.api.types.infer_dtype(df[column][1:]))
混合整数 细绳 混合的 混合的 混合的 混合的 混合的 混合的 混合
然后我在阅读 csv 时尝试定义数据类型:
f = pd.read_csv(fp, header=None,
names=['mmsi', 'date_time_utc', 'lon', 'lat', 'sog', 'cog', 'true_heading', 'nav_status', 'message_nr'],
dtype={'mmsi':int, 'date_time_utc':str, 'lon':float, 'lat':float, 'sog':float, 'cog':float, 'true_heading':float, 'nav_status':float, 'message_nr':float})
:以 10 为底的 int() 的无效文字:'mmsi'
然后我尝试通过运行来限制行数:
df = pd.read_csv(fp, header=None, nrows=10000,
names=['mmsi', 'date_time_utc', 'lon', 'lat', 'sog', 'cog', 'true_heading', 'nav_status', 'message_nr'])
这个似乎有效,但不明白为什么。