【问题标题】:pandas df select columns based on cell valuespandas df 根据单元格值选择列
【发布时间】:2022-01-11 15:24:51
【问题描述】:

我有一个 pandas 数据框,想删除第一行不是True 的所有列。我怎样才能做到这一点? 因此,例如,如果我有这个 df,我想找回 y 列。不过我不想输入任何列名。

df = pd.DataFrame({'x':[False, True, False, True], 'y':[True, False, True, True], 'z':[False, False,False,False]})

【问题讨论】:

  • df.loc[:, df.iloc[0] == True]?
  • @It_is_Chris。快捷方式:df.loc[:, df.iloc[0]] :)

标签: python pandas dataframe


【解决方案1】:

您也可以使用循环(最好是列表推导式)来就地执行此操作。 因此,您无需将生成的数据框分配给新变量。 请看下面的例子。

鉴于您有以下 pandas 数据框。

import pandas as pd
df = pd.DataFrame({"a": [True, False, True],
                   "b": [False, False, True],
                   "c": [True, True, True]})

您下面的循环删除了 b 列。

[df.drop([col], axis=1, inplace=True) 
for col in df.columns 
if df[col].loc[0] == False]

通常,我们使用“is”来检查布尔条件。 但是,这里使用双等号的好处是可以同时与 bool 和 numpy.bool 一起使用。

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 2018-03-23
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    相关资源
    最近更新 更多