我有一个熊猫数据框架,格式如下:
col1 col2 ... col4
A 2 [2-3-4]
B 3 [2-6]
A 3 [2-3-4]
C 2 [2-3-4]
D 2 [2-3-4]我只想选择col2中值在col4列表中的行。
我试着用:
df[(df["col2"].isin(df["col4"].str.split("-"))]但我得到了一个空的数据框架..。
发布于 2021-05-02 15:23:28
在这里,我会用一个列表来理解这个用法:
df[[str(a) in b for a,b in zip(df['col2'],df['col4'])]] col1 col2 col4
0 A 2 [2-3-4]
2 A 3 [2-3-4]
3 C 2 [2-3-4]
4 D 2 [2-3-4]或者使用regex搜索,它将与22 #thanks @Nk03不匹配2。
import re
df[[bool(re.search(fr'\b{a}\b',b)) for a,b in zip(df['col2'],df['col4'])]]发布于 2021-05-02 15:21:35
码
df['col4'] = df.col4.astype(str).str.replace('-',',')
df['col2'] = df.col2.astype(str)
df= df[df.apply(lambda x: x.col2 in x.col4, axis=1)]输出
col1 col2 col4
0 A 2 [2,3,4]
2 A 3 [2,3,4]
3 C 2 [2,3,4]
4 D 2 [2,3,4]发布于 2021-05-02 15:06:41
你可以试试这个:
import ast
df.col4 = df.col4.str.replace('-',',').apply(ast.literal_eval)
new_df = df[df.apply(lambda x: x['col2'] in x['col4'], axis =1)]https://stackoverflow.com/questions/67357815
复制相似问题