Python 无法将序列转换为<;类别';int'`&燃气轮机;
我有一组带有年龄列的数据。我想删除所有年龄大于90岁但小于1856岁的行 我是df的负责人: 这就是我所尝试的:Python 无法将序列转换为<;类别';int'`&燃气轮机;,python,pandas,Python,Pandas,我有一组带有年龄列的数据。我想删除所有年龄大于90岁但小于1856岁的行 我是df的负责人: 这就是我所尝试的: 由于dtype是timedelta64[ns]您可以使用between,指定两个timedelta作为端点,或者您可以首先使用numpy将天数转换为数字类型 安装程序 查找82到107天之间的时间: df[df.age.between(pd.to_timedelta(82, unit='days'), pd.to_timedelta(107, unit='days'))] #
由于
dtype
是timedelta64[ns]
您可以使用between,指定两个timedelta
作为端点,或者您可以首先使用numpy
将天数转换为数字类型
安装程序
查找82到107天之间的时间:
df[df.age.between(pd.to_timedelta(82, unit='days'), pd.to_timedelta(107, unit='days'))]
# age
#0 83 days
#2 83 days
使用numpy
df[(df.age/np.timedelta64(1, 'D')).between(82, 107)]
# age
#0 83 days
#2 83 days
您的错误是第2行
df['intage']=int(df['age'])
无效,无法将熊猫系列传递给int函数
如果df['age']是对象数据类型,则需要使用astype
df['intage'] = df['age'].astype(int)
或者,由于要减去两个日期,因此需要使用带有days属性的dt accessor来获取整数形式的天数
df['intage'] = df['age'].dt.days
一种解决方案是从
age
列中的timedelta
变量中提取天数
在下面的玩具示例中,您可以看到如何实现这一点:
import pandas as pd
import datetime
from datetime import timedelta as td
# Create example DataFrame
df = pd.DataFrame([td(83),td(108),td(83),td(63),td(81)], columns=["age"])
print df
# Get days from timedeltas
df.age = df.age.apply(lambda x: x.days)
print df
# Filter ages
df = df[df.age.between(91,1956, inclusive=True)]
print df
结果如下:
>>>
age
0 83 days
1 108 days
2 83 days
3 63 days
4 81 days
age
0 83
1 108
2 83
3 63
4 81
age
1 108
你好请提供一个我无法键入从[timedelta64[ns]]到[int32]@FanZhao Nope的timedelta。使用下面的.dt.days方法。
>>>
age
0 83 days
1 108 days
2 83 days
3 63 days
4 81 days
age
0 83
1 108
2 83
3 63
4 81
age
1 108