python - Pandas:如果变量为真,则返回特征名称
问题描述
我有一个约 2M 字符串的列表和一个约 800 个单词的列表。我创建了一个数据框,其中字符串作为行,单词作为列。除字符串变量外,所有其他变量都是对应于单词是否在字符串中的真或假值。没有缺失值。
IE
import pandas as pd
df = pd.DataFrame({'strings':['a string with california',
'a string with lobster',
'a str with california and lobster'],
'california':[True,False,True],
'lobster':[False,True,True],
'string':[True,True,False],})
因为数据框太长太宽,无法一次查看,所以我想要一个变量来列出对该特定行具有真实值的列名。例如,
df_filtered = pd.DataFrame({'strings':['a string with california',
'a string with lobster',
'a str with california and lobster'],
'matches':[['string','california'],
['string', 'lobster'],
['california', 'lobster']],
'california':[True,False,True],
'lobster':[False,True,True],
'string':[True,True,False],})
我是 pandas 的新手,我发现我可以使用以下命令创建一个包含缺失值的列名列表
columns_w_na = df.columns[df.isnull().any()].tolist()
有没有一种方法可以为每一行类似地捕获具有特定值的列的名称并将其表示为列表?
解决方案
你可能想检查
df.eq(True).dot(df.columns+',').str[:-1].str.split()
0 [california,string]
1 [lobster,string]
2 [california,lobster]
dtype: object
推荐阅读
- ios - 无法在 iOS Flutter 中播放后台资产中的 mp3 文件(锁定时)
- search-engine - 为什么在谷歌搜索引擎中出现“五词序列”
- android - SMS Retriver API 不适用于 Playstore 派生构建
- reactjs - 如何使用 React 中的函数库将数据从子组件传递到第二级以上的父组件?
- centos - 在 RHEL/CentOS 中禁用“重新输入新密码”的配置
- javascript - Javascript:无法验证 innerHTML 是否设置为特定图像 - 仅适用于纯文本
- c# - 有没有办法在 selenium c# MSTest 中以移动仿真模式打开 firefox 驱动程序
- java - 引起:org.aspectj.apache.bcel.classfile.ClassFormatException:文件:'java.lang.CharSequence':常量池中的无效字节标记:18
- teraterm - TeraTerm 如何发送一个循环,该循环发送 Alt B 直到路由器响应等待命令
- apache-spark - hdfs 分区在 spark sql 上不起作用