【问题标题】:Extracting number of days from timedelta column in pandas从熊猫的timedelta列中提取天数
【发布时间】:2019-05-21 15:03:20
【问题描述】:

我有一个存储老化值的数据框,如下所示:

Aging
-84 days +11:36:15.000000000
-46 days +12:25:48.000000000
-131 days +20:53:45.000000000
-131 days +22:22:50.000000000
-130 days +01:02:03.000000000
-80 days +17:02:55.000000000

我正在尝试提取上列中days 之前的文本。我尝试了以下方法:

df['new'] = df.Aging.split('days')[0]

以上返回

AttributeError: 'Series' object has no attribute 'split'

预期输出:

-84
-46
-131
-131
-130
-80

【问题讨论】:

    标签: python regex pandas timedelta


    【解决方案1】:

    IMO,一个更好的主意是转换为 timedelta 并提取日期组件。

    pd.to_timedelta(df.Aging, errors='coerce').dt.days
    
    0    -84
    1    -46
    2   -131
    3   -131
    4   -130
    5    -80
    Name: Aging, dtype: int64
    

    如果你坚持使用字符串方法,可以使用str.extract。

    pd.to_numeric(
        df.Aging.str.extract('(.*?) days', expand=False),
        errors='coerce')
    
    0    -84
    1    -46
    2   -131
    3   -131
    4   -130
    5    -80
    Name: Aging, dtype: int32
    

    或者,使用str.split

    pd.to_numeric(df.Aging.str.split(' days').str[0], errors='coerce')
    
    0    -84
    1    -46
    2   -131
    3   -131
    4   -130
    5    -80
    Name: Aging, dtype: int64
    

    【讨论】:

      猜你喜欢
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2015-04-24
      • 2016-10-20
      • 1970-01-01
      相关资源
      最近更新 更多