我有一个数据框作为
df
indx pids
A 181718,
B 31718,
C 1718,
D 1235,3456
E 890654,
Run Code Online (Sandbox Code Playgroud)
我想返回与 1718 完全匹配的行。
我尝试这样做,但正如预期的那样,它返回 1718 也是子集的行:
group_df = df.loc[df['pids'].astype(str).str.contains('{},'.format(1718)), 'pids']
indx pids
A 181718,
B 31718,
C 1718,
Run Code Online (Sandbox Code Playgroud)
当我尝试做这样的事情时,它返回空:
cham_geom = df.loc[df['pids'] == '1718', 'pids']
Run Code Online (Sandbox Code Playgroud)
预期输出:
indx pids
C 1718,
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我吗?
你可以尝试:
df[df.pids.replace('\D','',regex=True).eq('1718')]
indx pids
2 C 1718,
Run Code Online (Sandbox Code Playgroud)
'\D' :任何不是 0 到 9 数字的字符。
编辑 考虑以下df:
indx pids
0 A 181718,
1 B 31718,
2 C 1718,
3 D 1235,3456
4 E 890654,
5 F 3220,1718
Run Code Online (Sandbox Code Playgroud)
执行:
df[df.pids.str.split(",").apply(lambda x: '1718' in x)]
#if not comma only:-> df[df.pids.str.split("\D").apply(lambda x: '1718' in x)]
Run Code Online (Sandbox Code Playgroud)
给出:
indx pids
2 C 1718,
5 F 3220,1718
Run Code Online (Sandbox Code Playgroud)