簡體   English   中英

使用二維numpy數組有效填充熊貓數據幀

[英]Populating pandas dataframe efficiently using a 2-D numpy array

我有一個二維的numpy數組,其每行包含三個元素-['dataframe_column_name','dataframe_index','value']。 現在,我嘗試使用iloc double for循環填充pandas數據幀,但是速度很慢。 有沒有更快的方法可以做到這一點。 我對熊貓有點陌生,因此很抱歉,這是很基本的事情。 這是代碼片段:

my_nparray = [['a', 1, 123], ['b', 1, 230], ['a', 2, 321]]
for r in range(my_nparray.shape[0]):
    [col, ind, value] = my_nparray[r]
    df.iloc[col][ind] = value

my_nparray很大時,這會花費很多時間,還有其他方法嗎?

最初假設我可以創建此數據框:

  'a' 'b'
1 NaN NaN
2 NaN NaN

我希望輸出為:

  'a' 'b'
1 123 230
2 321 NaN

您可以使用from_records然后進行pivot

df = pd.DataFrame.from_records(my_nparray, index=1).pivot(columns=0)

       2
0      a      b
1
1  123.0  230.0
2  321.0    NaN

這指定索引使用數組中的字段1 ,數據透視表將Series 0用於列。

然后,我們可以在列和索引上重置MultiIndex:

df.columns = df.columns.droplevel(None)
df.columns.name = None
df.index.name = None

       a      b
1  123.0  230.0
2  321.0    NaN

DataFrame構造函數與DataFrame.pivotDataFrame.rename_axis

df = pd.DataFrame(my_nparray).pivot(1,0,2).rename_axis(index=None, columns=None)
print (df)
       a      b
1  123.0  230.0
2  321.0    NaN

暫無
暫無

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

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