元芳怎么了
感谢@everfigt还是不懂colums怎么丢的。。。t2的情况好理解,就是按true/false过滤,也就是说把空dataframe当成内部条件是没什么意义的吧?但是我尝试直接用空dataframe也是有结果的:In[11]:t2[pd.DataFrame()]Out[11]:ab0NaNNaN1NaNNaN另外,下面两种空dataframe过滤为什么会得到不同的结果呢:In[20]:t1.apply(myfunc,axis=1)Series([],dtype:float64)Out[20]:EmptyDataFrameColumns:[a,b]Index:[]In[21]:t1[t1.apply(myfunc,axis=1)]#为啥这里的colums丢了Series([],dtype:float64)In[13]:t1[pd.DataFrame()]#为啥直接失败了---------------------------------------------------------------------------ValueErrorTraceback(mostrecentcalllast)in()---->1t1[pd.DataFrame()]~/programs/venv36/lib/python3.6/site-packages/pandas/core/frame.pyin__getitem__(self,key)2133returnself._getitem_array(key)2134elifisinstance(key,DataFrame):->2135returnself._getitem_frame(key)2136elifis_mi_columns:2137returnself._getitem_multilevel(key)~/programs/venv36/lib/python3.6/site-packages/pandas/core/frame.pyin_getitem_frame(self,key)2217ifkey.values.sizeandnotis_bool_dtype(key.values):2218raiseValueError('MustpassDataFramewithbooleanvaluesonly')->2219returnself.where(key)22202221defquery(self,expr,inplace=False,**kwargs):~/programs/venv36/lib/python3.6/site-packages/pandas/core/generic.pyinwhere(self,cond,other,inplace,axis,level,errors,try_cast,raise_on_error)6128other=com._apply_if_callable(other,self)6129returnself._where(cond,other,inplace,axis,level,->6130errors=errors,try_cast=try_cast)61316132@Appender(_shared_docs['where']%dict(_shared_doc_kwargs,cond="False",~/programs/venv36/lib/python3.6/site-packages/pandas/core/generic.pyin_where(self,cond,other,inplace,axis,level,errors,try_cast)5889fordtincond.dtypes:5890ifnotis_bool_dtype(dt):->5891raiseValueError(msg.format(dtype=dt))58925893cond=cond.astype(bool,copy=False)ValueError:Booleanarrayexpectedforthecondition,notfloat64