一个按条件过滤pandas中行的函数,
对于非空的dataframe可以正常工作,但是对于带列名
的空的dataframe,过滤后的空datafram缺丢失了列名
问题复现如下:
In [5]: t1 = pd.DataFrame(columns=['a','b'])
In [6]: t2=pd.DataFrame({'a':[-1,1],'b':[2,3]})
In [7]: t1
Out[7]:
Empty DataFrame
Columns: [a, b]
Index: []
In [8]: t2
Out[8]:
a b
0 -1 2
1 1 3
In [13]: def myfunc1(row):
...: if row.empty:
...: print(row)
...: return True
...: if int(row['a'])>0:
...: return True
...: else:
...: return False
...:
In [17]: t2[t2.apply(myfunc1, axis=1)]
Out[17]:
a b
1 1 3
In [18]: t1[t1.apply(myfunc1, axis=1)]
Series([], dtype: float64)
Out[18]:
Empty DataFrame
Columns: []
Index: []
t2结果过滤得到row['a']>0
的新dataframe,
但是t1经过过滤为什么丢失了columns呢?
因为后续处理要用到columns,所以我想知道
江户川乱折腾
相关分类