Python 无法将序列转换为<;类别';int'`&燃气轮机;

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'))] #

我有一组带有年龄列的数据。我想删除所有年龄大于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'))]
#      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