从 pandas 中的 timedelta 列中提取天数
Extracting number of days from timedelta column in pandas
我有一个存储老化值的 Dataframe,如下所示:
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]
以上returns
AttributeError: 'Series' object has no attribute 'split'
预期输出:
-84
-46
-131
-131
-130
-80
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
我有一个存储老化值的 Dataframe,如下所示:
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]
以上returns
AttributeError: 'Series' object has no attribute 'split'
预期输出:
-84
-46
-131
-131
-130
-80
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