![](/img/trans.png)
[英]How to smartly convert a Pandas Dataframe in an array of arrays?
[英]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 每個Group
和id
使用:
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.