python - 在 for 循环中创建数据框
问题描述
我有一个函数接受df
--> 修改df
--> 并返回修改后的df
.
我有一个dfs
包含 5的列表df
-我想遍历它们,以便每个都由函数修改,如下所示:
dfs = [df1, df2, df3, df4, df5] # df1 to df5 : valid DataFrames
for df in dfs:
df = function(df)
当我这样做时,列表的内容dfs
没有改变,我只是得到一个名为“df”的新变量,其中包含(列表中的最后一个)的修改信息。df5
df
我究竟做错了什么?有没有办法可以做到这一点?
解决方案
您将修改df
后的名称分配回名称df
,但这不会更改它所代表的列表中的项目。您需要将修改后的本地 df
存储回您的列表:
dfs = [df1, df2, df3, df4, df5]
for idx, df in enumerate(dfs):
dfs[idx] = function(df) # immediately store result in list
会解决你的问题。
完整演示:
import pandas as pd
dfs = [pd.DataFrame({"t":[n]}) for n in range(1,6)]
def function(df):
df["t"] = df["t"] * 100
return df
print(*dfs,"", sep= "\n\n")
for idx, df in enumerate(dfs):
dfs[idx] = function(df)
print(*dfs, sep="\n\n")
输出:
t
0 1
t
0 2
t
0 3
t
0 4
t
0 5
t
0 100
t
0 200
t
0 300
t
0 400
t
0 500
推荐阅读
- security - 安全问题:Azure AKS omsagent pod 以 root 用户身份运行。如何应用额外的硬化?
- java - 按特定顺序计算零和一序列的算法
- prolog - 带有 Prolog 的确定性有限自动机
- xslt - 1.0 版中的 XSLT ../name()
- spring - 转换通量
在单声道 > 在 Spring Webflux 中 - reactjs - 使用可加载组件的 React.lazy 模式
- android-recyclerview - Xamarin.Android 如何在 recyclerview 项目中保存 textview 值
- python - Python-docx - 从 URL 将图片插入 docx
- c - 如何从我的引导加载程序调用用 c 编写的内核
- java - 带有偏好的 Osmdroid 夜间模式