0

我有一个具有 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 的列?

4

1 回答 1

0

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

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

如果您尝试将多个值写入多个列,请参阅:一次将 df.apply() 的输出写入多个列

请注意以下事项:

  • 调用 apply 时,只使用函数名作为第一个参数。不需要 Lambda。
  • 使用轴 = 1 时,您的函数将通过整行。您需要在函数中识别行的相关列:
def f(row):
    id = row['ID']
    return stuff(id)
于 2019-04-14T14:01:53.727 回答