熊猫:通过“A列”应用功能,同时读取“B列”

时间:2015-08-05 07:17:51

标签: python pandas

我正在使用Pandas来驱动Python功能。从inputs.csv开始,我使用"Column A"中的每一行作为函数的输入。

csv中,还有一个"Column B",其中包含我想要读入函数中变量x的值。它不应该来自apply "Column B" - 这仍应来自"Column A"。这可能吗?

这是应用"Column A"函数的当前代码:

import pandas as pd
df = pd.read_csv(inputs.csv, delimiter=",")

def function(a):
    #variables c, d, e are created here
    ###I would like to create x from Column B if possible
    return pd.Series([c, d, e])
df[["Column C", "Column D", "Column E"]] = df["Column A"].apply(function)

编辑后:此问题已被确定为another question的可能副本。虽然答案可能相同,但问题并不相同。对于未来的读者,可能并不明显两列上的apply可以与一列上的apply互换,同时“读取”另一列。因此,这个问题应该保持开放。

2 个答案:

答案 0 :(得分:2)

是的,您目前正在使用Series.apply(),而是可以使用 - DataFrame.apply()lst$CLICK_DT来获取函数中的每一行,然后您可以访问列 - {{ 1}}。

示例 -

factor

这只是一个非常简单的示例,您可以将其修改为您真正想要做的事情。

答案 1 :(得分:1)

传递给the apply methodaxis=1参数将整行放入the apply method作为单个元组参数。

然而,这比使用单个列慢了很多。如果性能问题,我会建议不要这样做。

def scrape(x):
    a, b = x
    # Magically create c, d, e from a
    print(b)
    return pd.Series([c, d, e])

df[["Column C", "Column D", "Column E"]] = df[(['Column A', 'Column B'])].apply(scrape, axis=1)