python - 在循环内重新索引数据帧
问题描述
我正在尝试重新索引循环内一组数据框中的列。这似乎只在循环之外起作用。请参阅下面的示例代码
import pandas as pd
data1 = [[1,2,3],[4,5,6],[7,8,9]]
data2 = [[10,11,12],[13,14,15],[16,17,18]]
data3 = [[19,20,21],[22,23,24],[25,26,27]]
index = ['a','b','c']
columns = ['d','e','f']
df1 = pd.DataFrame(data=data1,index=index,columns=columns)
df2 = pd.DataFrame(data=data2,index=index,columns=columns)
df3 = pd.DataFrame(data=data3,index=index,columns=columns)
columns2 = ['f','e','d']
for i in [df1,df2,df3]:
i = i.reindex(columns=columns2)
print(df1)
df2 = df2.reindex(columns=columns2)
print(df2)
df1 没有根据需要重新索引,但是如果我在循环之外重新索引 df2 它可以工作。这是为什么?
谢谢安德鲁
解决方案
发生这种情况的原因与发生这种情况的原因相同:
a = 5
b = 6
for i in [a, b]:
i = 4
>>> a
5
为什么?请参阅此已接受的答案。
关于您的问题,解决它的一种方法是创建一个重新list
索引的数据框,如下所示:
reindexed_dfs = [df.reindex(columns=columns2) for df in [df1, df2, df3]]
然后重新分配df1
和。但最好还是继续使用新创建的列表。df2
df3
推荐阅读
- mysql - 使用删除查询从 mySQL 数据库中删除问题(未找到 404)
- ios - 强制换行位置
- css - 合并两个具有相同渐变背景的 div
- openstack - 如何在 Openstack Kolla 中配置 Octavia?
- git - github cli 多个帐户
- html - Flask 下载 zip 文件:失败 - 没有文件
- python - 我的项目基于多图像。它没有在前端显示图像
- javascript - 如何在 vue js 中获取 ion-radio 值 - ionic
- reactjs - Expo typscript 项目中的 Express 服务器引发错误
- java - Java - 在 Linux 中获取列表网络接口