繁体   English   中英

如何在循环中包装相同的代码块(或应用函数)

[英]How do I wrap the same block of code in a loop (or apply function)

我想在一个循环中包装一个代码块,该代码块对来自不同csv文件的导入DataFrame执行相同的操作。 考虑一个例子:我导入

apples=pd.read_csv("path\dataset_1.csv")
oranges=pd.read_csv("path\dataset_2.csv")

导入的DataFrame的结构,格式和列名完全相同。 然后,我在第一组上执行操作。 例如

apples_1 = apples [["column A", "column B"]]
apples_1. columns= ["bad", "good"]
apples_2 = apples [["column C", "column D"]]
apples_2. columns = [ "bad", "good"]
apples_3=pd.concat([apples_1,apples_2],axis=0) 

然后,但是我必须在第二个数据帧上执行完全相同的操作-橙色。 我提醒第二个DataFrame具有与第一个相同的列名,并且在操作后将具有相同的重命名列。

 oranges_1 = oranges [["column A", "column B"]]
 oranges_1. columns= ["bad", "good"]
 oranges_2 = oranges [["column C", "column D"]]
 oranges_2. columns = [ "bad", "good"]
 oranges_3=pd.concat([oranges_1,oranges_2],axis=0) 

如果我有10个DataFrame,并且不得不一遍又一遍地编写相同的代码来执行相同的操作,那将不是Python风格。 所以我想知道是否有一种优雅的方法可以通过循环来执行此操作或应用一个函数。在此先感谢您的帮助。

for i in range(1,11):
    df = pd.read_csv("path\dataset_{0}.csv".format(i))
    adf=pd.concat([df[["column A", "column B"]],df[["column C", "column D"]]],axis=0)
    adf.columns = [ "bad", "good", "bad", "good"]
    # do operations on adf

循环遍历每个csv,将其读入df并对其进行操作。 只要所有的csv文件都具有相同的列名(如问题中所述),它就可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM