Pandas函数:DataFrame.apply()运行顶行两次

Win*_*ags 11 python pandas

我有一个函数的两个版本,Pandas用于逐行Python 2.7遍历inputs.csv.

第一个版本用于Series.apply()a single column,并按预期遍历每一行.

第二个版本使用DataFrame.apply()on multiple columns,由于某种原因,它读取顶行两次.然后继续执行其余的行而不重复.

任何想法为什么后者读取顶行两次?


版本#1 - Series.apply() (读取顶行一次)

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)
Run Code Online (Sandbox Code Playgroud)

版本#2 - DataFrame.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)
Run Code Online (Sandbox Code Playgroud)

print y:

v1(x):            v2(f):

    Row_1         Row_1
    Row_2         Row_1
    Row_3         Row_2
                  Row_3
Run Code Online (Sandbox Code Playgroud)

AZh*_*hao 13

这是设计的,如此此处所述

apply函数需要知道返回数据的形状,以智能地确定它将如何组合.应用是一种智能应用聚合,转换或过滤的快捷方式.您可以尝试分解您的功能,以避免重复调用.

  • 如何破坏该功能。你能帮我举个例子吗? (3认同)