通过合并许多未知长度的数据帧来创建数据帧

时间:2015-03-06 16:21:08

标签: python pandas dataframe concat

我正在尝试对棒球场F / x数据做一些分析。所有音高数据都存储在一个pandas数据帧中,其中包含“Pitch speed”和“X location”等列。我有一个包装函数(使用pandas.query),对于给定的音高,它将找到具有相似速度和位置的其他音高。此函数返回未知大小的pandas数据帧。我想在大量的音高上使用这个功能;例如,找到类似于单个游戏中投掷的所有投球。我有一个正确执行此操作的函数,但它很慢(可能是因为它不断调整resampled_pitches的大小):

def get_pitches_from_templates(template_pitches, all_pitches):
    resampled_pitches = pd.DataFrame(columns = all_pitches.columns.values.tolist())
    for i, row in template_pitches.iterrows():
        resampled_pitches = resampled_pitches.append( get_pitches_from_template( row, all_pitches))
    return resampled_pitches

我试图在每一行上使用pandas.apply重写函数,或者通过创建数据帧列表然后合并,但不能完全正确地使用语法。

这种类型的采样和合并的最快方法是什么?

2 个答案:

答案 0 :(得分:1)

听起来你应该使用pd.concat

res = []
for i, row in template_pitches.iterrows():
    res.append(resampled_pitches.append(get_pitches_from_template(row, all_pitches)))
return pd.concat(res)

答案 1 :(得分:0)

我认为合并可能会更快。建议不要使用df.iterrows(),因为它会为每一行生成一个系列。