[pandas] 转换DatetimeIndex为一个日期字符串的Series

遇到的问题:

需要将一个DatetimeIndex转换为一个日期字符串的Series类型。

比如,有一个DatetimeIndex是这样的:

print dti
DatetimeIndex(['2015-09-21 10:30:00', '2015-09-21 11:30:00',
               '2015-09-21 14:00:00', '2015-09-21 15:00:00',
               '2015-09-22 10:30:00', '2015-09-22 11:30:00',
               '2015-09-22 14:00:00', '2015-09-22 15:00:00'],
              dtype='datetime64[ns]', freq=None, tz=None)

现在只需要这些数据里面的2015-09-21,2015-09-22这样的日期信息,时间信息可以省略。


解决方案:

如果Index的类型是普通的pandas.core.index.Index,那么这个问题好解决:

df.index.str.split(' ').str[0]

然而当尝试在DatetimeIndex上使用str对象时,会抛出异常:

AttributeError: Can only use .str accessor with string values (i.e. inferred_typ
e is 'string', 'unicode' or 'mixed')

经过查看API,发现可以先将DatetimeIndex转换为一个类型为datetime的数组,然后对该数组进行操作得到一个numpy.ndarray,最后将这个array转化为Series即可,具体代码如下所示:

pydate_array = dti.to_pydatetime()
date_only_array = np.vectorize(lambda s: s.strftime('%Y-%m-%d'))(pydate_array )
date_only_series = pd.Series(date_only_array)

最后得到的结果就是只含有日期的Series:

print date_only_series 

0    2015-09-21
1    2015-09-21
2    2015-09-21
3    2015-09-21
4    2015-09-22
5    2015-09-22
6    2015-09-22
7    2015-09-22
dtype: object
  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 pandas 中,可以使用 `pd.to_datetime` 函数将字符串、整数等数据类型转换日期时间格式(Timestamp 或 DatetimeIndex)。该函数接受的参数包括输入数据、日期格式(如果输入数据为字符串)以及其他一些选项。 举个例子: ``` import pandas as pd # 将字符串转换日期时间格式 date_strings = ['2021-07-13', '2022-08-13'] dates = pd.to_datetime(date_strings) print(dates) # 输出: # 0 2021-07-13 # 1 2022-08-13 # dtype: datetime64[ns] ``` 在这里,字符串数组 `date_strings` 被转换日期时间格式并保存在 `dates` 中。 ### 回答2: 在pandas中,我们可以使用to_datetime()方法将字符串或数字转换日期对象。该方法可以接受各种字符串和数字格式,并将其转换日期。下面是一个简单的示例: 首先,我们需要导入pandas库: ``` import pandas as pd ``` 接下来,我们创建一个包含日期字符串pandas Series对象: ``` dates_str = pd.Series(['2022-01-01', '2022-02-01', '2022-03-01']) ``` 然后,我们可以使用to_datetime()方法将字符串转换日期: ``` dates = pd.to_datetime(dates_str) ``` 现在,我们得到了一个包含日期的新的pandas Series对象dates。你可以使用print()函数打印这个对象来查看转换后的结果: ``` print(dates) ``` 输出将是: ``` 0 2022-01-01 1 2022-02-01 2 2022-03-01 dtype: datetime64[ns] ``` 这里,dates的数据类型是datetime64[ns],表示它是一个日期对象。 除了字符串,我们还可以将数字转换日期。例如,假设我们有一个包含日期的整数的pandas Series对象: ``` dates_int = pd.Series([20220101, 20220201, 20220301]) ``` 然后,我们可以使用to_datetime()方法将整数转换日期: ``` dates = pd.to_datetime(dates_int, format='%Y%m%d') ``` 这里,我们使用format参数来指定整数的日期格式。在这个例子中,整数的格式是YYYYMMDD。 最后,我们可以打印转换后的结果: ``` print(dates) ``` 输出将是相同的日期对象序列。 总结起来,pandas提供了to_datetime()方法,可以将字符串或数字转换日期对象。我们可以通过指定适当的日期格式来控制转换的过程。这样,我们可以轻松地在pandas中处理和操作日期数据。 ### 回答3: pandas一个Python的数据分析库,可以用于处理和分析大量的数据。在pandas中,可以将数据转换日期类型,方便进行日期相关的操作和计算。 要将数据转换日期类型,需要使用pandas中的to_datetime()函数。这个函数可以将字符串或其他类型的数据转换日期类型。例如,如果有一个包含日期字符串列,可以使用to_datetime()函数将其转换日期类型的列。 下面是一个示例代码,展示了如何使用pandas中的to_datetime()函数将数据转换日期类型: ```python import pandas as pd # 创建一个包含日期字符串列 data = {'date': ['2021-01-01', '2021-01-02', '2021-01-03']} # 创建一个DataFrame df = pd.DataFrame(data) # 将字符串转换日期类型 df['date'] = pd.to_datetime(df['date']) # 打印转换结果 print(df.dtypes) print(df) ``` 运行以上代码,输出结果如下: ``` date datetime64[ns] dtype: object date 0 2021-01-01 1 2021-01-02 2 2021-01-03 ``` 可以看到,通过to_datetime()函数将字符串转换日期类型后,date列的数据类型变为了datetime64[ns],并且日期数据以年-月-日的形式显示。 通过将数据转换日期类型,我们可以方便地进行日期计算、筛选和排序等操作,提高数据分析的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值