首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过循环每个使用for循环的数据来处理数据

通过循环每个使用for循环的数据来处理数据
EN

Stack Overflow用户
提问于 2020-01-20 02:12:39
回答 3查看 52关注 0票数 1

我试图通过使用for循环来对我拥有的所有Dataframe执行一些进程,不做任何更改。

代码:

代码语言:javascript
运行
复制
import pandas as pd

a = pd.DataFrame({'a':[1,2,3,4,5,6,7],
                 'b':[8,9,0,1,2,3,4]})
b = pd.DataFrame({'c':[1,2,3,4,5,6,7],
                 'b':[8,9,0,1,2,3,4]})

li = [a,b]
for i in li:
    'df_{}'.format(i) = i.rename(columns={'b':'test'})

A和b均产出:

代码语言:javascript
运行
复制
    a   b
0   1   8
1   2   9
2   3   0
3   4   1
4   5   2
5   6   3
6   7   4

    c   b
0   1   8
1   2   9
2   3   0
3   4   1
4   5   2
5   6   3
6   7   4

预期产出:

代码语言:javascript
运行
复制
    a   test
0   1   8
1   2   9
2   3   0
3   4   1
4   5   2
5   6   3
6   7   4

    c   test
0   1   8
1   2   9
2   3   0
3   4   1
4   5   2
5   6   3
6   7   4

有人能指出这里出了什么问题吗?我试着在其他数据集上使用它,但是没有什么变化,我不明白为什么。请帮帮忙。

顺便说一句,我想知道我是否能给它取一个不同的名字。以上编辑?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-20 02:14:45

inplace=True中使用rename

代码语言:javascript
运行
复制
for i in li:
    i.rename(columns={'b':'test'}, inplace=True) # Without assignment

输出:

代码语言:javascript
运行
复制
a.head()
   a  test
0  1     8
1  2     9
2  3     0
3  4     1
4  5     2

b.head()
   c  test
0  1     8
1  2     9
2  3     0
3  4     1
4  5     2
票数 3
EN

Stack Overflow用户

发布于 2020-01-20 02:15:29

重命名将创建一个新实例。

相反,试着:

代码语言:javascript
运行
复制
for i in li:
    i = i.rename(columns={'b':'test'}, inplace=True)
票数 0
EN

Stack Overflow用户

发布于 2020-01-20 02:17:29

(编辑):

看起来,您正在转换的列正在复制的对象上得到叠加。以下解决办法应解决这一问题:

代码语言:javascript
运行
复制
for i in li:
    f'df_{i}' = i.copy(deep=True)
    f'df_{i}' = f'df_{i}'.rename(columns={'b':'test'})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59816196

复制
相关文章

相似问题

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