使用 Pandas 迭代地将列添加到数据框

Tat*_*ots 5 python loops dataframe pandas

我有一些相对简单的代码,我正在努力将它们组合在一起。我有一个 CSV 文件,已将其读入数据框。CSV 是面板数据(即每行的唯一公司和年份观察值)。我想对两列执行函数,然后我想根据函数的输出创建新变量。

这是我到目前为止的代码:

#Loop through rows in a CSV file
for index, rows in df.iterrows():
    #Start at column 6 and go to the end of the file
    for row in rows[6:]:
        data = perform_function1( row )
        output =  perform_function2(data)    
        df.ix[index, 'new_variable'] = output
        print output
Run Code Online (Sandbox Code Playgroud)

我希望这段代码从第 6 列开始迭代,然后转到文件末尾(例如,我有两列,我想在 Column6 和 Column7 上执行该函数),然后根据执行的函数创建新列(例如,输出 6 和输出 7)。上面的代码返回 Column7 的输出,但我不知道如何创建一个变量,该变量允许我捕获两列的输出(即,一个不会被循环覆盖的新变量)。我搜索了 Stackoverflow,但没有看到任何与我的问题直接相关的内容(也许是因为我太菜鸟了?)。我将衷心感谢您的帮助。

谢谢,

TT

PS我不确定我是否提供了足够的细节。如果我需要提供更多信息,请告诉我。

ASG*_*SGM 4

迭代操作并没有利用 Pandas 的功能。Pandas 的优势在于在整个数据帧中有效地应用操作,而不是逐行迭代。对于这样的任务来说,如果您想要在数据中链接一些函数,这非常有用。您应该能够在一行中完成整个任务。

df["new_variable"] = df.ix[6:].apply(perform_function1).apply(perform_function2)
Run Code Online (Sandbox Code Playgroud)

perform_function1将应用于每一行,并将perform_function2应用于第一个函数的结果。