应用返回数据框

时间:2019-04-01 22:32:51

标签: pandas-apply

我有一个具有ID索引的数据框,以及一个接受ID并返回有关该ID的数据(1行)的函数。我想创建另一个与索引具有相同ID的数据框,但是列是从我的函数中收集的列和值。我正在尝试使用Apply,但是我不确定该怎么做。

例如,

def f(id):
    does stuff
    return id_df

new_df = pd.DataFrame(index = original_df.index)

new_df.apply(lambda x: f(x.name).values, axis = 1)

这样做使我看起来像:

id1       [[data...
id2       [[data...
id3       [[data...
id4       [[data...
id5       [[data...

所有数据显示为一列。如何使输出函数的列填充new_df的列?

1 个答案:

答案 0 :(得分:0)

您应该在旧数据框上调用.apply()并将结果返回到新数据框的列,如下所示:

new_df['colA'] = old_df.apply(f, axis = 1)

如果您尝试将多个值写入多个列,请参见:Writing the output of df.apply() to multiple columns at once

请注意以下几点:

  • 在调用apply时,仅将函数名称用作第一个参数。不需要Lambda。
  • 使用axis = 1时,您的函数将传递整行。您需要在函数中标识该行的相关列:
def f(row):
    id = row['ID']
    return stuff(id)