This question already has answers here:
Why does pandas apply calculate twice
(3个答案)
在6个月前关闭。
我有一个函数的两个版本,它们使用
第一个版本在
第二个版本在
有什么想法为什么后者要读两次第一行?
版本1 –
版本#2 –
(3个答案)
在6个月前关闭。
我有一个函数的两个版本,它们使用
Pandas
逐行地通过Python 2.7
进行操作。第一个版本在
inputs.csv
上使用Series.apply()
,并按预期遍历每一行。第二个版本在
single column
上使用DataFrame.apply()
,由于某种原因,它两次读取第一行。然后,它继续执行其余行而不重复。有什么想法为什么后者要读两次第一行?
版本1 –
multiple columns
(一次读第一行)import pandas as pd
df = pd.read_csv(inputs.csv, delimiter=",")
def v1(x):
y = x
return pd.Series(y)
df["Y"] = df["X"].apply(v1)
版本#2 –
Series.apply()
(读取第一行两次)import pandas as pd
df = pd.read_csv(inputs.csv, delimiter=",")
def v2(f):
y = f["X"]
return pd.Series(y)
df["Y"] = df[(["X", "Z"])].apply(v2, axis=1)
DataFrame.apply()
:v1(x): v2(f):
Row_1 Row_1
Row_2 Row_1
Row_3 Row_2
Row_3
最佳答案
这是设计使然,如here和here所述
Apply函数需要知道返回数据的形状,以智能地确定如何将其组合。 Apply是一种快捷方式,可以智能地应用聚合,转换或过滤。您可以尝试将函数分开,这样可以避免重复调用。