这个问题是一个近乎重复的这一个,有一些调整。
获取以下数据框,并获取其中包含“sch”或“oa”的列的位置。在 R 中足够简单:
df <- data.frame(cheese = rnorm(10),
goats = rnorm(10),
boats = rnorm(10),
schmoats = rnorm(10),
schlomo = rnorm(10),
cows = rnorm(10))
grep("oa|sch", colnames(df))
[1] 2 3 4 5
write.csv(df, file = "df.csv")
现在在 python 中,我可以使用一些详细的列表理解:
import pandas as pd
df = pd.read_csv("df.csv", index_col = 0)
matches = [i for i in range(len(df.columns)) if "oa" in df.columns[i] or "sch" in df.columns[i]]
matches
Out[10]: [1, 2, 3, 4]
我想知道在 python 中是否有比上面的列表理解示例更好的方法。具体来说,如果我有几十个字符串要匹配怎么办。在 R 中,我可以做类似的事情
regex <- paste(vector_of_strings, sep = "|")
grep(regex, colnames(df))
但是如何在 python 中使用列表理解来做到这一点并不明显。也许我可以使用字符串操作以编程方式创建将在列表内执行的字符串,以处理所有重复的or语句?
眼眸繁星
慕田峪4524236
相关分类