首页 > 解决方案 > 根据熊猫列中的逻辑测试从DataFrame中选择行

问题描述

考虑这个数据框

my_input_df = pd.DataFrame({
'export_services': [[1],[],[2,4,5],[4,6]], 
'import_services': [[],[4,5,6,7],[],[]], 
'seaport':['china','mexico','africa','europe'], 
'price_of_fish':['100','150','200','250'],
'price_of_ham':['10','10','20','20']})

我想对布尔值的 export_services 进行过滤(丢弃空列表)并仅输出列的子集

my_output_df = pd.DataFrame({
'export_services': [[1],[2,4,5],[4,6]], 
'seaport':['china','africa','europe'], 
'price_of_fish':['100','200','250']})

我该怎么办?

谢谢 :)

标签: pythonpandasdataframeboolean

解决方案


将列转换为布尔值,返回Falses 为空值,因此可loc用于过滤:

df = my_input_df.loc[my_input_df['export_services'].astype(bool), 
                     ['export_services','seaport','price_of_fish']]
print (df)
  export_services seaport price_of_fish
0             [1]   china           100
2       [2, 4, 5]  africa           200
3          [4, 6]  europe           250

推荐阅读