簡體   English   中英

從numpy數組創建Panda Df

[英]Create Panda Df from numpy array

我正在運行下面的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)。

我將使用初始數據列“ 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

這是我解決的方法:

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'])

只需遍歷仿真並將值附加到數據框即可:

# 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM