从numpy数组创建Panda Df

时间:2015-07-22 01:12:43

标签: python numpy pandas

我正在运行类似下面的np.random.choice。

record = np.random.choice(data, size=6, p=prob)
        maxv = max(record)
        minv = min(record)
        val = record

从此我发现了最小值和最大值。我想加入一个熊猫数据帧。以下是我想要的输出:

Min,Max,value
1,5,2
1,5,3
1,5,3
1,5,5
1,5,1
1,5,3

这是我想从一次模拟输出的一个例子。请记住,我正在多次执行此模拟,因此我希望能够不断添加到创建的数据框中。每个模拟将分别具有其自己的最小值和最大值。我还想在输出中保持最小值和最大值(为什么1和5在示例输出中)。

3 个答案:

答案 0 :(得分:1)

我用初始数据列'Val'创建df然后只需在一个衬里中添加新列:

In [242]:
df = pd.DataFrame({'Val':np.random.randint(1,6,6)})
df['Min'], df['Max'] = df['Val'].min(), df['Val'].max()
df

Out[242]:
   Val  Min  Max
0    4    2    5
1    5    2    5
2    5    2    5
3    4    2    5
4    5    2    5
5    2    2    5

答案 1 :(得分:0)

我就是这样解决的:

record = np.random.choice(data, size=6, p=prob)
maxv = [max(record)] * len(record)
minv = [min(record)] * len(record)

new_data = zip(minv, maxv, record)

df = DataFrame(new_data, columns=['Min', 'Max', 'val'])

答案 2 :(得分:0)

只需遍历模拟并将值附加到数据框中:

# CREATE DATA FRAME STRUCTURE
df = pd.DataFrame(columns=['Min', 'Max', 'val'])

# RUN SIMULATION IN LOOP ITERATION
record = np.random.choice(data, size=6, p=prob)

for i in range(len(record)):
    maxv = np.max(record)
    minv = np.min(record)
    val = record[i]   

    # APPEND ROW
    df.loc[len(df)] = [maxv, minv, val]