我是python和pandas的新手。
我有一个相当大的数据集(〜500.000行)。第一列包含日期和时间,格式为
created_at
0 Sun Jul 26 04:06:58 +0000 2020
1 Sun Jul 26 04:08:22 +0000 2020
2 Sun Jul 26 04:24:10 +0000 2020
3 Sun Jul 26 04:27:10 +0000 2020
第一步,我想将其仅修剪到一个月和一天,以得到如下结果:
created_at
0 Jul 26
1 Jul 26
2 Jul 26
3 Jul 26
理想情况下,我希望这样:
created_at
0 07_26
1 07_26
2 07_26
3 07_26
有人可以通过一些有效的方法来帮助我吗? 我真的很感谢您的帮助!
答案 0 :(得分:3)
使用parse_dates
和read_csv
中的列名,然后使用Series.dt.strftime
进行自定义格式:
df = pd.read_csv('file', parse_dates=['created_at'])
#for first
df['created_at'] = df['created_at'].dt.strftime("%b %d")
#for second
df['created_at'] = df['created_at'].dt.strftime('%m_%d')
print (df)
created_at
0 07_26
1 07_26
2 07_26
3 07_26
答案 1 :(得分:1)
In [28]: df = pd.read_csv('a.csv')
In [29]: df['created_at'] = pd.to_datetime(df['created_at'])
In [30]: df
Out[30]:
created_at
0 2020-07-26 04:06:58+00:00
1 2020-07-26 04:08:22+00:00
2 2020-07-26 04:24:10+00:00
3 2020-07-26 04:27:10+00:00
In [31]: df.dtypes
Out[31]:
created_at datetime64[ns, UTC]
dtype: object
In [32]: df.created_at.dt.strftime("%b %d")
Out[32]:
0 Jul 26
1 Jul 26
2 Jul 26
3 Jul 26
Name: created_at, dtype: object
In [33]: df.created_at.dt.strftime("%m_%d")
Out[33]:
0 07_26
1 07_26
2 07_26
3 07_26
Name: created_at, dtype: object
OR
您可以在加载csv文件本身的过程中使用参数parse_dates
df = pd.read_csv('a.csv', parse_dates=['created_at'])