pandas:将DataFrames系列转换为单个DataFrame

sri*_*amn 8 python append pandas

我有一个pandas Series对象,每个值都是a DataFrame.我正在尝试将此转换为单个,DataFrame其中所有Series值(个体DataFrame)堆叠在彼此之上.如何在没有循环的情况下实现这一目标?

下面的玩具示例生成测试对象(results).

import pandas as pd
import numpy as np
numrows = 10000

def toy_function(x):
    silly_sequence = np.random.uniform(10, 100, (x+1))
    toy = pd.DataFrame({'ID':pd.Series(np.random.random_integers(1,20,3)),'VALUE':pd.Series((np.median(silly_sequence),np.mean(silly_sequence), np.max(silly_sequence)))})

    return toy

results = pd.DataFrame({'ID':range(numrows)})['ID'].apply(toy_function)
Run Code Online (Sandbox Code Playgroud)

resultsSeries类型,每个元素是DataFrame这样的:

In [1]: results[1]
Out[1]: 
   ID      VALUE
0  17  40.035398
1   8  40.035398
2  20  66.483083
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种堆叠等方式results[1],results[2]以产生这样的DataFrame:

   ID      VALUE
0  17  40.035398
1   8  40.035398
2  20  66.483083
4  12  25.035398
5   1  25.135398
6  19  65.553083
...
Run Code Online (Sandbox Code Playgroud)

jwi*_*ner 9

尝试使用pd.concat.至少,pd.concat(series.values.tolist())应该工作.

它的默认设置是获取一个pandas数据帧或系列列表,并将它们返回端到端.http://pandas.pydata.org/pandas-docs/stable/merging.html

  • 不需要.values。您可以只通过`series.tolist()` (2认同)

Ale*_*der 6

在执行此操作时连接结果并忽略您的索引:

df_stacked = pd.concat([r for r in results], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)