首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python的其他列列表中选择列值行

在Python的其他列列表中选择列值行
EN

Stack Overflow用户
提问于 2021-05-02 15:00:58
回答 3查看 76关注 0票数 3

我有一个熊猫数据框架,格式如下:

代码语言:javascript
复制
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列表中的行。

我试着用:

代码语言:javascript
复制
df[(df["col2"].isin(df["col4"].str.split("-"))]

但我得到了一个空的数据框架..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-02 15:23:28

在这里,我会用一个列表来理解这个用法:

代码语言:javascript
复制
df[[str(a) in b for a,b in zip(df['col2'],df['col4'])]]

代码语言:javascript
复制
  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。

代码语言:javascript
复制
import re
df[[bool(re.search(fr'\b{a}\b',b)) for a,b in zip(df['col2'],df['col4'])]]
票数 4
EN

Stack Overflow用户

发布于 2021-05-02 15:21:35

代码语言:javascript
复制
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)]

输出

代码语言:javascript
复制
    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]
票数 2
EN

Stack Overflow用户

发布于 2021-05-02 15:06:41

你可以试试这个:

代码语言:javascript
复制
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)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67357815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档