有一个dataframe,其中一列为:
index |
---|
AB102&AB129; ABKX |
AB102 |
…… |
AS129; A8SZ |
AB102&AB129 |
我想先用“; ”分割出字符串,然后再提取所有AB出现过的字符串数量,也就是:
index |
---|
2 |
1 |
…… |
0 |
1 |
第一行AB出现三次,但是"; "分割成两个字符串,每个字符串都出现一次,所以算两次。
split = df['index'].str.split('; ') # 分割字符串
df['count'] = split.apply(lambda x : len([i for i in x if 'AB' in i])) # 创建新的列
可以使用Python的collections模块中的Counter类来查找特定元素在每行出现的频率。例如,假设我们有一个列表,其中包含一些字符串:my_list = ['a', 'b', 'a', 'c', 'd', 'a', 'b']我们可以使用Counter类来查找每个字符串在列表中出现的频率:from collections import Countercounts = Counter(my_list)print(counts)# 输出:Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1})
"该回答引用ChatGPT"
请参考下面的方法,如果可行,还请点击 采纳,感谢!
你可以使用pandas库来实现这个操作。你可以定义一个函数,用于统计"AB"出现的次数,并使用pandas的apply函数来将该函数应用于DataFrame的每一行:
import pandas as pd
def count_ab(string):
split_string = string.split("; ")
count = 0
for sub_string in split_string:
count += sub_string.count("AB")
return count
df["count"] = df["index"].apply(count_ab)
这个代码会在df的"index"列上应用count_ab函数,并在df中创建一个名为"count"的新列,其中包含统计的"AB"的数量。
filename = "input.txt"
with open(filename, "r") as f:
lines = f.readlines()
special_element = "element"
counts = []
for line in lines:
count = line.count(special_element)
counts.append(count)
for i, count in enumerate(counts):
print("Line {0}: {1}".format(i+1, count))
在这段代码中,filename 变量是你的输入文件的文件名,special_element 变量是你要查找的特殊元素的字符串。代码先通过打开文件读取文件的所有行,然后通过使用 count 函数来查找每一行中特殊元素的数量,并将结果存入 counts 列表中。最后,代码循环遍历 counts 列表,并将每行的行号和该行中特殊元素的数量输出到控制台。
不知道你这个问题是否已经解决, 如果还没有解决的话: