![](/img/trans.png)
[英]Convert List object in a pandas dataframe to numpy array
[英]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.