为了账号安全,请及时绑定邮箱和手机立即绑定

使用过滤函数和for循环过滤多个数据帧

使用过滤函数和for循环过滤多个数据帧

精慕HU 2023-09-02 16:16:35
我有多个数据框,我想过滤每个数据框,以便每个 df 只保留由单词“总体”组成的列。我有以下 for 循环,但它没有与手动执行相同的效果 [又名 y15 = y15.filter(like='Overall')]。pit_dfs = [y15,y16,y17]for i in pit_dfs:    i = i.filter(like='Overall')可复制的例子:y15 = pd.DataFrame({'Col1-Overall': ['a','b','c','d'],              'Col2': ['a','b','c','d'],              'Col3': ['a','b','c','d'],              'Col4': ['a','b','c','d']})y16 = pd.DataFrame({'Col1-Overall': ['a','b','c','d'],              'Col2': ['a','b','c','d'],              'Col3': ['a','b','c','d'],              'Col4': ['a','b','c','d']})y17 = pd.DataFrame({'Col1-Overall': ['a','b','c','d'],              'Col2': ['a','b','c','d'],              'Col3': ['a','b','c','d'],              'Col4': ['a','b','c','d']})预期输出:y15+--------------+| Col1-Overall |+--------------+| a            |+--------------+| b            |+--------------+| c            |+--------------+| d            |+--------------+y16+--------------+| Col1-Overall |+--------------+| a            |+--------------+| b            |+--------------+| c            |+--------------+| d            |+--------------+y17+--------------+| Col1-Overall |+--------------+| a            |+--------------+| b            |+--------------+| c            |+--------------+| d            |+--------------+我知道这是一个简单的例子,但在过去的一个小时里我一直在浏览 Stack,但找不到类似的例子。我缺少什么?谢谢!
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

循环中的变量不是指针,因此您不会更改实际的数据帧。

你可以这样做(我没有测试过):

pit_dfs = [y15,y16,y17,y18,y19]


for idx in range(len(pit_dfs)):

    pit_dfs[idx] = pit_dfs[idx].filter(like='Overall')


查看完整回答
反对 回复 2023-09-02
?
湖上湖

TA贡献2003条经验 获得超2个赞

这是一个替代方案:


pit_dfs = [y15,y16,y17,y18,y19]


def filter_cols_like(df, like):

    cols_not_like = [col for col in df.columns if like not in col]

    df.drop(columns=cols_not_like,inplace=True)


for i in pit_dfs:

    filter_cols_like(i,like='Overall')


查看完整回答
反对 回复 2023-09-02
  • 2 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信