gpt4 book ai didi

python - 按列对 csv 进行排序时出错

转载 作者:行者123 更新时间:2023-11-30 22:12:43 25 4
gpt4 key购买 nike

我正在尝试按多列对 .csv 文件进行排序,我使用的是 pandas,这是 .csv 文件:

col1;col2;col3;col4;col5
6943000;11;1.0;2016-01-01 15:30:31;?
6943000;19;1.0;2016-01-01 15:38:07;?
6943000;13;1.0;2016-01-01 15:54:27;?
6942992;10;1.0;2016-01-01 00:52:59;?
6942993;8;1.0;2016-01-01 12:08:36;?
.....

我应该按 col1 和 col4 排序,这是代码:

import pandas as pd
df = pd.read_csv('input.csv')
df = df.sort_values(by=['col1', 'col4'])
df.to_csv('sorted.csv', index=False)

但我收到此错误:

Traceback (most recent call last):   File "C:\Python\Scripts\provacsv.py", line 3, in <module>
df = df.sort_values(by=['col1', 'col4']) File "C:\Python\lib\site-packages\pandas\core\frame.py", line 4411, in sort_values
stacklevel=stacklevel) File "C:\Python\lib\site-packages\pandas\core\generic.py", line 1379, in
_get_label_or_level_values
raise KeyError(key) KeyError: 'col1'

因此 col1 失败,但我不确定这是订购 col 4(时间戳)的正确方法

最佳答案

您的csv以分号';'分隔,默认情况下read_csv的分隔符是',',传递参数sep=';':

In[21]:
import io
t="""col1;col2;col3;col4;col5
6943000;11;1.0;2016-01-01 15:30:31;?
6943000;19;1.0;2016-01-01 15:38:07;?
6943000;13;1.0;2016-01-01 15:54:27;?
6942992;10;1.0;2016-01-01 00:52:59;?
6942993;8;1.0;2016-01-01 12:08:36;?"""
df = pd.read_csv(io.StringIO(t), sep=';')
df = df.sort_values(by=['col1', 'col4'])
df

[21]:
col1 col2 col3 col4 col5
3 6942992 10 1.0 2016-01-01 00:52:59 ?
4 6942993 8 1.0 2016-01-01 12:08:36 ?
0 6943000 11 1.0 2016-01-01 15:30:31 ?
1 6943000 19 1.0 2016-01-01 15:38:07 ?
2 6943000 13 1.0 2016-01-01 15:54:27 ?

另请注意,如果您想要 datetime dtype 然后告诉 pandas 解析它们,您的时间戳将被解释为字符串:

In[26]:

import io
t="""col1;col2;col3;col4;col5
6943000;11;1.0;2016-01-01 15:30:31;?
6943000;19;1.0;2016-01-01 15:38:07;?
6943000;13;1.0;2016-01-01 15:54:27;?
6942992;10;1.0;2016-01-01 00:52:59;?
6942993;8;1.0;2016-01-01 12:08:36;?"""
df = pd.read_csv(io.StringIO(t), sep=';', parse_dates=['col4'])
df = df.sort_values(by=['col1', 'col4'])
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 3 to 2
Data columns (total 5 columns):
col1 5 non-null int64
col2 5 non-null int64
col3 5 non-null float64
col4 5 non-null datetime64[ns]
col5 5 non-null object
dtypes: datetime64[ns](1), float64(1), int64(2), object(1)
memory usage: 240.0+ bytes

关于python - 按列对 csv 进行排序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51025590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com