我有多个数据框,我想过滤每个数据框,以便每个 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 回答
![?](http://img1.sycdn.imooc.com/545850ee0001798a02200220-100-100.jpg)
紫衣仙女
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')
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
湖上湖
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')
添加回答
举报
0/150
提交
取消