我有一个大型 df,有 70 多列和 1 百万多行,我想查找并定位 a 子字符串
我试过了
df.apply(lambda row: row.astype(str).str.contains('substring').any(), axis=1)
我现在只知道哪些行包含子字符串,而不知道哪些列
您可以使用
df.isin()
获取一系列布尔值,告诉您字符串存在的位置。然后,我喜欢将其堆叠并使用布尔索引。这可能会有所帮助:
import pandas as pd
import numpy as np
import sys
x = np.array([[0., 1., 1., 'string', 0., 0.],
[0., 1., 1., 'substring', 0., 0.],
[0., 1., 1., 'substring', 0., 0.],
[0., 1., 1., 'string', 0., 0.]])
print(x)
y = ['a', 'b', 'c', 'd', 'e', 'f']
df = pd.DataFrame(x, columns=y)
print('Original df: ')
print(df)
result = df.isin(['substring'])
print('result: ', result)
pos = result.stack()
print('pos: ', pos)
string_pos = pos[pos].index.to_list() # boolean indexing: Gets indexes where the val is True.
print('string_pos: ', string_pos)