对于 100 行和 53 列的数据,我想使用 pandas 从 csv 文件中提取仅包含 true 和 false 的列名称作为数据

发布于 2025-01-10 07:43:22 字数 477 浏览 0 评论 0原文

还原剂应用风筝杰克还原剂2 op1 true FALSE 项目 FALSE op2 FALSE true item4 true op3 true FALSE item2 true op4 true true item4 true

该表是我拥有的大型 100x53 数据的小表示。如何仅提取具有 true 和 false 数据值的列的名称? 我有大约 53 列,它们是不同列名称的组合列,&不同的列值,但我只想提取具有真和假字符串数据的列。 我使用下面的代码认为,我可以遍历 csv 并提取只有 true 和 false 的列名称,但它不起作用。任何帮助表示赞赏!

 for col_name in df.columns:
       if (df[col_name] =='True' and 'False'):
            print(col_name.tolist())
       else :
            print('none')

reducntant app kite jacker reductant2
op1 true FALSE item FALSE
op2 FALSE true item4 true
op3 true FALSE item2 true
op4 true true item4 true

this table is small respresentation of the large 100x53 data i have . How to extract only the names of the columns which has true and false data values?
I have around 53 columns and they are a combinations columns different column names,& different columns values but i m interested in only extracting columns that has true and false string data.
i used the below code thinking that , i can traverse the csv and extract columns name which has true and false only but it doesnt work. Any help is appreciated!

 for col_name in df.columns:
       if (df[col_name] =='True' and 'False'):
            print(col_name.tolist())
       else :
            print('none')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

飘然心甜 2025-01-17 07:43:22

Pandas 自动推断布尔列,因此下面的代码应该可以工作:

df = pd.read_csv('data.csv')
df = df.select_dtypes(bool)

如果它不起作用,您可以使用:

df = pd.read_csv('data.csv', dtype=str)  # disable dtype detection
df = df.loc[:, df.isin(['false', 'true']).all()]  # take care of case

Pandas infers automatically boolean columns, so the code below should work:

df = pd.read_csv('data.csv')
df = df.select_dtypes(bool)

In the case of it doesn't work, you can use:

df = pd.read_csv('data.csv', dtype=str)  # disable dtype detection
df = df.loc[:, df.isin(['false', 'true']).all()]  # take care of case
甜中书 2025-01-17 07:43:22

试试这个:

temp = (df.iloc[:,:]).isin(['true','false']).any()#returns a bool pd.Series True=> column contains only 'true' and 'false'
columns_to_drop = [] #column index to be dropped
for i in range(len(temp)):
    if t[i] == False:
        columns_to_drop.append(i)
        
df.drop(df.columns[columns_to_drop], axis = 1, inplace = True) #required data frame

try this:

temp = (df.iloc[:,:]).isin(['true','false']).any()#returns a bool pd.Series True=> column contains only 'true' and 'false'
columns_to_drop = [] #column index to be dropped
for i in range(len(temp)):
    if t[i] == False:
        columns_to_drop.append(i)
        
df.drop(df.columns[columns_to_drop], axis = 1, inplace = True) #required data frame
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文