Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法消除';非类型';对象在数据帧中不可编辑错误_Python_Dataframe - Fatal编程技术网

Python 无法消除';非类型';对象在数据帧中不可编辑错误

Python 无法消除';非类型';对象在数据帧中不可编辑错误,python,dataframe,Python,Dataframe,我是一个新加入Python的老SAS用户。所以有几个例子说明了为什么会发生这种错误。比如说 我想消除这个错误源。我正在使用read_cvs阅读器创建的大型数据帧 print(df.size, df.shape, df.ndim) 7202952 (266776, 27) 2 日期和时间是对象: print(df.Date.dtype) print(df.Time.dtype) object object 因此我将它们转换为日期时间: df['Date'] = pd.to_datetime(d

我是一个新加入Python的老SAS用户。所以有几个例子说明了为什么会发生这种错误。比如说

我想消除这个错误源。我正在使用read_cvs阅读器创建的大型数据帧

print(df.size, df.shape, df.ndim)
7202952 (266776, 27) 2
日期和时间是对象:

print(df.Date.dtype)
print(df.Time.dtype)
object
object
因此我将它们转换为日期时间:

df['Date'] = pd.to_datetime(df['Date'])
df['Time'] = pd.to_datetime(df['Time'])
将df.Date设置为索引:

df.set_index('Date', inplace=True)
删除na的:

df = df.dropna()
print(df.shape)
(266752, 26)
并验证有24行比上述少:

统计2015年12月25日的事故报告数量,包括:

print(len(df.loc['2015-07-04']))
625
print(len(df.loc[['2015-12-25','2015-12-26']]))
到目前为止还不错。现在统计2015年12月25日至2015年12月31日期间的事故报告数量,包括:

print(len(df.loc['2015-07-04']))
625
print(len(df.loc[['2015-12-25','2015-12-26']]))
返回:

TypeError: 'NoneType' object is not iterable
我已经没有主意了,所以我用以下方法检查索引:

print(df.index)
DatetimeIndex(['2015-01-09', '2015-01-09', '2015-02-23', '2015-02-23',
           '2015-02-23', '2015-02-11', '2015-02-11', '2015-02-23',
           '2015-02-23', '2015-04-18',
           ...
           '2015-08-30', '2015-11-29', '2015-11-29', '2015-11-29',
           '2015-07-26', '2015-07-26', '2015-12-31', '2015-07-28',
           '2015-07-28', '2015-07-15'],
          dtype='datetime64[ns]', name='Date', length=266752, freq=None)
我想了解这个错误的根源是什么。其他想法是:也许对df.Date进行排序会有所帮助,因为给定的日期是“无序的”,并且每天有多行

我认为去掉24行可以解决这个问题。我还假设,由于数据帧不包含任何对象,所以我不会有任何None对象

df.get_dtype_counts()
datetime64[ns]     1
int64             25
dtype: int64

我该怎么办?

我的数据集也出现了同样的错误,但我发现当我使用pandas.to_datetime转换我选择的日期时,它起了作用。下面是一些示例代码:

df1 = pd.DataFrame(np.random.randn(6,4), index=pd.date_range(start='2015-01-01', periods=6, freq='D'), columns=list('ABCD'))
len(df1.loc[['2015-01-01', '2015-01-03'],:])
返回一个错误

len(df1.loc[pd.to_datetime(['2015-01-01', '2015-01-03']),:])

返回2

代码示例中的日期似乎与解释性文本不一致。