python - 根据指定列中的字符串值条目是否包含子字符串来分隔 pandas 数据框

标签 python pandas dataframe

假设我有以下数据框:

df = pd.DataFrame({'name':['a', 'b', 'c','d','e'], 'description':['vim2tests','vim2trial','vim3tests','vim3zip', 'vim4trial'], 'count':[4,5,6,7,8]})

我试图分成 3 个数据帧,其中包含“描述”条目包含“vim2”、“vim3”、“vim4”子字符串的行。

有没有有效的方法来做到这一点?我可以实现一个 for 循环来查找我想要的行的索引,但这根本没有效率,我正在努力寻找更好的方法。

最佳答案

IIUC,只需使用 str.extract 创建一个 groupby 条件列

我们可以将数据帧保存在字典中。

dfs = {group : data.drop('key',1) for group,data in 
                 df.assign(key=df['description'].str.extract('(vim\d+)'))\
                           .groupby('key')
}

print(dfs['vim3'])
  name description  count
2    c   vim3tests      6
3    d     vim3zip      7

print(dfs.keys())

dict_keys(['vim2', 'vim3', 'vim4'])

或者 anky 提供的更简单的解决方案 -

dfs = dict(tuple(
           df.groupby(df['description'].str.extract('(vim\d+)'
                                        ,expand=False))
         ))

或者:

dict(iter(df.groupby(df['description'].str.extract('(vim\d+)',expand=False)))

print(dfs)

{'vim2':   name description  count
 0    a   vim2tests      4
 1    b   vim2trial      5,
 'vim3':   name description  count
 2    c   vim3tests      6
 3    d     vim3zip      7,
 'vim4':   name description  count
 4    e   vim4trial      8}

关于python - 根据指定列中的字符串值条目是否包含子字符串来分隔 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62489297/

相关文章:

python - 如何在pyqtgraph中对齐文本小部件的中心

python - pygeoapi 中的创建、更新和删除操作

python - 创建具有固定值的列

python - 从多个数据帧创建单个箱线图

python - 如果数据框列中的空值已存在于另一行中,则用相同的值填充该空值

python - Python 中的一维马氏距离

python - 如何重新初始化sqlite3中SELECT查询结果集中的行索引计数?

Python:检查每个用户的唯一类别

python - 将 Pandas 数据框转换为字典字典

r - 在R中用 'separate'(tidyr)拆分数据帧的几列