通过for循环在多个数据帧上运行函数

2024-09-28 22:02:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个对每个数据帧执行标准预处理的函数。我将4个数据帧作为for循环的列表传递给该函数。 但是在函数中执行的更改不会反映在实际的数据帧中。为什么

我的代码:

def  merge_preprp(x):
     x[x.columns[0]] = x[x.columns[0]].astype(str)
     x[x.columns[0]]= x[x.columns[0]].str.extract('(\d+)')
     x = x[pd.notnull(x[x.columns[0]])]
     x = x[x[x.columns[0]].apply(lambda x: x.isnumeric())] 
     x[x.columns[0]] = x[x.columns[0]].astype(int)
     x.sort_values(x.columns[0], inplace = True)
     x.drop_duplicates(subset = x.columns[0], keep = 'last',inplace = True)
     return x

# dataframes A, B, C

list1 = [A,B,C]
for i in list1:
    i =merge_preprp(i)

Tags: columns数据函数代码true列表for标准
1条回答
网友
1楼 · 发布于 2024-09-28 22:02:31

如果为DataFrames列表调用函数,它将不在原地工作,因为在您的函数中是组合原地函数,也不是原地函数,但需要将输出分配给循环中的新DataFrames列表:

list1 = [A,B,C]
out = []
for i in list1:
    out.append(merge_preprp(i))

或在列表中:

out = [merge_preprp(i) for i in list1]

如果在您的函数中只有像最后两行那样的用于排序和删除重复项的就地操作,那么您的解决方案将按您需要的方式工作

相关问题 更多 >