查找名称包含固定列中特定值的列

Posted

技术标签:

【中文标题】查找名称包含固定列中特定值的列【英文标题】:Find column whose name contains a specific value that is in a fixed column 【发布时间】:2020-08-30 17:39:47 【问题描述】:

我有一个带有列名的数据框,我想找到包含某个值的数据框。我正在像“...._segment”这样的列名中搜索“segment”列中的值。 我希望将列名作为字符串或变量返回,因此稍后我可以正常使用 df['name'] 或 df[name] 访问该列。 enter image description here

【问题讨论】:

你能告诉我们你到目前为止尝试了什么吗? 我只能搜索一个固定的字符串。例如: selected_cols =[x for x in df.columns[df.columns.str.contains('402')]] 请分享您的代码。这里有一些说明。请注意“无屏幕截图”警告。 ***.com/help/how-to-ask 【参考方案1】:

我不知道你是想获取包含你想要的字符串的列名,还是至少有一个值包含你想要的字符串的列的列名。

如果数据框是:

In [1]: import pandas as pd 
   ...: df = pd.DataFrame('a_1': ['b_1', 'b_2'], 'b_1': ['a_1', 'a_2'])                                                                             
In [2]: df                                                                                                                                            
Out[2]: 
   a_1  b_1
0  b_1  a_1
1  b_2  a_2

对于第一种情况,如果要查找与a_*匹配的所有列名:

In [3]: import re                                                                                                                                     
In [4]: columns = [col for col in df.columns if isinstance(col, str) and re.match('a_.*', col)]                                                       
In [5]: columns                                                                                                                                       
Out[5]: ['a_1']

对于第二种情况,如果要查找至少有一个值与a_.* 匹配的所有列:

In [6]: columns = [col for col, ser in df.iteritems() if ser.str.match('a_.*').any()]                                                                 
In [7]: columns                                                                                                                                       
Out[7]: ['b_1']

其中:

df.iteritems:返回(列名,列值(系列))对的迭代器。

Series.any:如果系列中的任何值为True,则返回True

【讨论】:

以上是关于查找名称包含固定列中特定值的列的主要内容,如果未能解决你的问题,请参考以下文章

查找具有 Null 值的列并将它们写入 Pyspark 中每条记录的新列中

查找名称包含特定字符串的列

熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]

如何使用熊猫从另一个数据框 B 的列中删除包含特定数量值的数据框 A 中的行?

如何计算另一列中特定值的列的平均值?

包含多个世界的列中的全文搜索搜索