如何將Dataframe單元格內(nèi)的列表分解為不同的行我想把包含一個(gè)列表的熊貓單元格變成每個(gè)值的行。所以,拿著這個(gè):如果我想在nearest_neighbors列,以便每個(gè)值都是每個(gè)值中的一行。opponent索引,我該怎么做呢?有熊貓的方法是為了這樣的操作嗎?
3 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
lambda
nearest_neighbors
name
opponent
.
name
opponent
).
df = (pd.DataFrame({'name': ['A.J. Price'] * 3, 'opponent': ['76ers', 'blazers', 'bobcats'], 'nearest_neighbors': [['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']] * 3}) .set_index(['name', 'opponent']))>>> df nearest_neighbors name opponent A.J. Price 76ers [Zach LaVine, Jeremy Lin, Nate Robinson, Isaia] blazers [Zach LaVine, Jeremy Lin, Nate Robinson, Isaia] bobcats [Zach LaVine, Jeremy Lin, Nate Robinson, Isaia]df.reset_index(inplace=True)rows = []_ = df.apply(lambda row: [rows.append([row['name'], row['opponent'], nn]) for nn in row.nearest_neighbors], axis=1)df_new = pd.DataFrame(rows, columns=df.columns).set_index(['name', 'opponent'])>>> df_new nearest_neighbors name opponent A.J. Price 76ers Zach LaVine 76ers Jeremy Lin 76ers Nate Robinson 76ers Isaia blazers Zach LaVine blazers Jeremy Lin blazers Nate Robinson blazers Isaia bobcats Zach LaVine bobcats Jeremy Lin bobcats Nate Robinson bobcats Isaia
>>> (pd.melt(df.nearest_neighbors.apply(pd.Series).reset_index(), id_vars=['name', 'opponent'], value_name='nearest_neighbors') .set_index(['name', 'opponent']) .drop('variable', axis=1) .dropna() .sort_index() )
添加回答
舉報(bào)
0/150
提交
取消