簡體   English   中英

使用列表中的標簽將 numpy 數組轉換為 pandas dataframe

[英]Convert numpy array to pandas dataframe with labels from list

請建議如何執行以下預突變:

array = [1, 3, 2] (numpy.ndarray)

l1 = ['foo_qwe1_ert1', 'bar_qwe2_ert2', 'baz_qwe3_ert3'] (list)

我需要得到以下 pandas dataframe:

專欄1 專欄2 專欄3
qwe1 ert1
巴茲 qwe3 ert3
酒吧 qwe2 ert2

問題是列表包含從 0 到 30 的文本標簽(格式:XXX_YYY_ZZZ)和 numpy.array 具有形狀(3536,)並包含從 0 到 30 的數字。我需要為數組中的每個數字分配 label 並將其保存為 pandas dataframe

您可以使用:

df = pd.DataFrame(data={'list':['foo_qwe1_ert1', 'bar_qwe2_ert2', 'baz_qwe3_ert3']})
df[['Column1', 'Column2', 'Column3']] = df['list'].str.split('_', expand=True)
df.drop(columns=['list'], inplace=True)

OUTPUT:

  Column1 Column2 Column3
0     foo    qwe1    ert1
1     bar    qwe2    ert2
2     baz    qwe3    ert3

首次使用:

df = pd.DataFrame([x.split('_') for x in l1], columns=['Column1', 'Column2', 'Column3'])
print (df)
  Column1 Column2 Column3
0     foo    qwe1    ert1
1     bar    qwe2    ert2
2     baz    qwe3    ert3

您可以使用str.split然后reindex

df = pd.Series(l1).str.split('_', expand=True)
df.index = [1,2,3]
df = df.reindex(array).reset_index(drop=True).rename(columns={i:'Column'+str(i+1) for i in df.columns})

Output:

  Column1 Column2 Column3
0     foo    qwe1    ert1
1     baz    qwe3    ert3
2     bar    qwe2    ert2

暫無
暫無

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

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