我正在使用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
互换,同时“读取”另一列。因此,这个问题应该保持开放。
答案 0 :(得分:2)
是的,您目前正在使用Series.apply()
,而是可以使用 - DataFrame.apply()
,lst$CLICK_DT
来获取函数中的每一行,然后您可以访问列 - {{ 1}}。
示例 -
factor
这只是一个非常简单的示例,您可以将其修改为您真正想要做的事情。
答案 1 :(得分:1)
传递给the apply method的axis=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)