簡體   English   中英

從 Pandas 數據框列單獨創建 numpy 數組

[英]Create separately numpy arrays from pandas dataframe columns

我想從我的 Pandas 數據幀列在 Python n 的 numpy 數組中自動創建。 我可以手動執行此操作,例如:

numpy_array_1 = data_frame.column_1.values
numpy_array_2 = data_frame.column_2.values
...
numpy_array_n = data_frame.column_n.values

但我不知道我應該如何編寫代碼來自動創建這些數組。

您可以簡單地使用for並循環遍歷它。 請記住,使用(list(data_frame))返回數據框中列名的列表:

np_array = []
for i in list(data_frame):
    np_array.append(data_frame[i].values)

預期輸出是一個包含值子列表的列表。 每個子列表與數據框中列的位置相匹配。 因此,您可以制作字典,也可以從中制作一個元組。 字典示例:

np_array_dict = {}
for i in list(data_frame):
    np_array_dict[i] = data_frame[i].values

假設我們有一個簡單的 df:

df = pd.DataFrame({"0":[1,2], "1":[3,4]})
df 
   0  1
0  1  3
1  2  4

然后你可以運行:

for (key,value) in df.to_dict("list").items():
    exec("numpy_array_{} = np.array({})".format(key, value))

你會得到:

numpy_array_0
array([1, 2])

numpy_array_1
array([3, 4])

等等。

或者:

for col in list(df):
    exec("numpy_array_{} = df[str({})].values".format(col,col))

您可以獲得所有數據幀行和列值的矩陣,就像 df.values 一樣簡單您真的需要每列不同的數組嗎?

這可以在不使用循環的情況下完成:

df = pd.DataFrame({"0":[1,2], "1":[3,4], "2":[5,6]})
print(df)

   0  1  2
0  1  3  5
1  2  4  6

進而:

[*np.transpose(df.values)]

結果是:

[array([1, 2]), array([3, 4]), array([5, 6])]

如果需要一本字典,只需按以下步驟進行:

dict(zip(range(df.shape[1]), [*np.transpose(df.values)]))

這使:

{0: array([1, 2]), 1: array([3, 4]), 2: array([5, 6])}

暫無
暫無

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

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