如何过滤空的DataFrame并仍然保留该DataFrame的列?

问题描述 投票:-8回答:2

考虑我的数据帧df

import pandas as pd

df = pd.DataFrame()
df['A'] = [1,2,3]
df['B'] = [4,5,6]
print(df)

df1 = df[df.A.apply(lambda x:x == 4)]
df2 = df1[df1.B.apply(lambda x:x == 1)]
print(df2)

这将打印

df
   A  B
0  1  4
1  2  5
2  3  6
df2
Empty DataFrame
Columns: []
Index: []

当我使用空系列过滤时,为什么pandas不保留我的列轴?

python pandas
2个回答
3
投票

熊猫几乎考虑了我们需要的所有情况,特别是对于那些简单的情况

PS:熊猫没有错

df1 = df.loc[df.A.apply(lambda x:x == 4)]
df2 = df1.loc[df1.B.apply(lambda x:x == 1)]
df1
Out[53]: 
Empty DataFrame
Columns: [A, B]
Index: []
df2
Out[54]: 
Empty DataFrame
Columns: [A, B]
Index: []

-5
投票
df2 = df1[df1.B.apply(lambda x:x == 1).astype(bool)]

所有其他答案都缺少重点(除了温氏,这是一个不错的选择)

© www.soinside.com 2019 - 2024. All rights reserved.