我正在尝试基于列表中的值创建pandas数据帧的子集。但是,我需要包含字符串索引。我将通过一个示例进行演示:
这是我的数据框架:
df = pd.DataFrame({'A' : ['1-2', '2', '3', '3-8', '4']})下面是它看起来的样子:
A
0 1-2
1 2
2 3
3 3-8
4 4我有一个值列表,我想用它从我的数据帧中选择行。
list1 = ['2', '3']我可以使用.isin()函数通过我的列表项从我的数据帧中选择行。
subset = df[df['A'].isin(list1)]
print(subset)
A
1 2
2 3但是,我想要包含'2‘或'3’的任何值。这是我想要的输出:
A
1 1-2
2 2
3 3
4 3-8我可以在.isin()函数中使用字符串索引吗?我正在努力想出另一个变通办法。
发布于 2019-10-30 03:07:48
使用isin和any检查str.split
Newdf=df[df.A.str.split('-',expand=True).isin(['2','3']).any(1)].copy()
Out[189]:
A
0 1-2
1 2
2 3
3 3-8发布于 2019-10-30 03:18:57
您可以尝试使用正则表达式:
import re
pattern=re.compile(".*(("+(")|(").join(list1)+"))")
print(df.loc[df['A'].apply(lambda x: True if pattern.match(x) else False)])输出:
A
0 1-2
1 2
2 3
3 3-8
[Program finished]https://stackoverflow.com/questions/58613843
复制相似问题