簡體   English   中英

將 dataframe 轉換為 arrays - pandas 的數組

[英]Convert dataframe to array of arrays - pandas

我正在從 pandas df. 使用下面的 df,我想將每個唯一Group子集為 arrays。 我還希望為id中的每個唯一值生成一個單獨的數組。

import pandas as pd

df = pd.DataFrame({'Int_1': [1.0, 2.0, 1.0, 3.0, 1.0, 2.0, 3.0, 2.0], 
               'Int_2': [1.0, 2.0, 2.0, 2.0, 1.0, 1.0, 1.0, 2.0],
               'Period': [1, 1, 1, 1, 2, 2, 2, 2],
               'Group': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
               'id': ['1', '2', '3', '4', '1', '2', '3', '4']})

Group_A = [df[df['Group'] == 'A'][['Int_1','Int_2']].to_numpy()]
Group_B = [df[df['Group'] == 'B'][['Int_1','Int_2']].to_numpy()]

print(Group_A)

預期 output:

[array([[1.0, 1.0],
       [1.0, 1.0]]), array([[1.0, 2.0], 
       [3.0, 1.0]])]

如果每個Group需要單獨的數組,首先通過boolean indexing過濾,然后在列表理解中將列轉換為2d array

arrA = [g[['Int_1','Int_2']].to_numpy() for i, g in df[df['Group'] == 'A'].groupby('id')]
print (arrA)
[array([[1., 1.],
       [1., 1.]]), array([[1., 2.],
       [3., 1.]])]

如果需要 arrays 每個Groupid使用:

arr = [g[['Int_1','Int_2']].to_numpy() for i, g in df.groupby(['Group', 'id'])]
print (arr)
[array([[1., 1.],
       [1., 1.]]), array([[1., 2.],
       [3., 1.]]), array([[2., 2.],
       [2., 1.]]), array([[3., 2.],
       [2., 2.]])]

暫無
暫無

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

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