在熊猫数据框中修剪字符串(日期,时间)

时间:2020-08-15 10:33:41

标签: python pandas

我是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

有人可以通过一些有效的方法来帮助我吗? 我真的很感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

使用parse_datesread_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'])