我试图找出一个字符串是否跨多个列存在。如果字符串存在,则返回1;如果不存在,则返回0,作为dataframe中的新系列。
搜索论坛后,我明白str.contains可以使用,但我正在搜索100多个列,因此一次使用单个系列对我来说是没有效率的。
如果相关,列中有一些NAs。
简化数据帧示例:
d = {'strings_1': ['AA', 'AB', 'AV'], 'strings_2': ['BB', 'BA', 'AG'],
'strings_1': ['AE', 'AC', 'AI'], 'strings_3': ['AA', 'DD', 'PP'],
'strings_4': ['AV', 'AB', 'BV']}
simple_df = pd.DataFrame(data=d)
例如,如果我对查找“AA”感兴趣,我想返回以下数据帧。
目标数据帧示例:
d = {'strings_1': ['AA', 'AB', 'AV'], 'strings_2': ['BB', 'BA', 'AG'],
'strings_1': ['AE', 'AC', 'AI'], 'strings_3': ['AA', 'DD', 'PP'],
'strings_4': ['AV', 'AB', 'BV'], 'AA_TRUE': [1, 0, 0]}
target_df = pd.DataFrame(data=d)
非常感谢你的帮助。
如果需要检查混合值-数字与字符串比较由值创建的numpy数组,请使用
数据帧。任何
检查,每行至少有一个True
,最后一次转换为int
:
simple_df['new'] = (simple_df.values == 'AA').any(1).astype(int)
#or cast all values to string before comparing
#simple_df['new'] = (simple_df.astype(str)== 'AA').any(1).astype(int)
print (simple_df)
strings_1 strings_2 strings_3 strings_4 new
0 AE BB AA AV 1
1 AC BA DD AB 0
2 AI AG PP BV 0
详情:
print ((simple_df.values == 'AA'))
[[False False True False False]
[False False False False False]
[False False False False False]]
print ((simple_df.values == 'AA').any(1))
[ True False False]
如果需要检查子字符串:
simple_df['new'] = simple_df.applymap(lambda x: 'G' in x).any(1).astype(int)
print (simple_df)
strings_1 strings_2 strings_3 strings_4 new
0 AE BB AA AV 0
1 AC BA DD AB 0
2 AI AG PP BV 1
问题内容: 如果我有这样的框架 我想检查这些行中是否包含某个单词,我只需要这样做。 输出: 如果我决定列出一个清单 如何检查列表中的行是否包含某个单词? 问题答案: 该方法接受正则表达式模式: 由于支持正则表达式模式,因此您还可以嵌入标志:
如果我有这样一个框架 我想检查这些行中是否有包含某个单词的行,我必须这样做。 输出: 如果我决定列一个清单: 如何检查行是否包含列表中的某个单词?
问题内容: 我需要检查是否在一个或多个列中找到了字符串。 基本上,我有一个程序,可让您检查多个字段(名称,姓氏等)。 如果同时检查了名称和姓氏,并且用户仅输入了名称,例如chris,则可以很容易地在mySQL中使用LIKE参数检查它,如下所示: 这显然有效。但是,我需要做的是,如果同时检查了姓名和姓氏,它将执行以下操作: 我希望如果在有一个名为john doe的客户端时执行此逻辑,则第二个命令仍会
我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢
查找字符串中出现最多的字符和个数? 如 sdsdsddssssssdd -> 字符最多的是s,出现9次 思路说明 利用python中的collections模块的Counter,查此函数详细内容.对字符串进行统计。 然后将结果转化为字典类型。 特别注意,在字符串中可能会出现数量并列第一的字符,因此要通过循环找出最大数之后,再通过循环找出最大数对应的字母(键)。 解答1(python) import
问题内容: 我想获取一列中字符串的频率计数。一方面,这类似于将数据框折叠为仅反映列中的字符串的一组行。我能够通过循环解决此问题,但知道有更好的解决方案。 df示例: 并想出去: 我搜索了很多论坛,但找不到合适的答案。 我假设使用pivot_table方法是正确的方法,但是无法获取正确的参数来折叠没有为输出df提供明显索引的表。 我可以通过使用value_counts()遍历每列并将每个值计数系列附