将数据帧的水平值转换为垂直值

2024-04-30 04:13:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我从字典中创建了一个数据框,如下所示:

 dictionary={'cat': [B1, B2,B3,B4,B5,B6,B7,B8,B9,B10], 'Dog': [c1, c2,c3], 'Bird': [d1,d2,d3,d4,d5]}

df = pd.DataFrame(dictionary.items(), columns=['ID_1','ID_match'])

但我有一张这样的桌子:

![![enter image description here

我想这样:

![enter image description here

到目前为止,我是这样做的:

df_2_1=df .replace('', np.nan).set_index('ID_1').stack().reset_index(name='ID_match').drop('level_1',1)

但我得到的第二个值是list。。。 有人能给我指出正确的方向吗

解决方案

我只需要展开第二列: df.explode('ID_match')


Tags: 数据iddfindexdictionary字典matchb2
1条回答
网友
1楼 · 发布于 2024-04-30 04:13:20

这个解决方案应该有效。第一个.iloc从第一列开始每隔一列进行一次,第二个从第二列开始每隔一列进行一次

df1 = df.iloc[:,::2].melt()
df1 = df1['variable']
df2 = df.iloc[:,1::2].melt()
df2 = df2['value']
df3 = pd.DataFrame({'col1':df1, 'col2':df2})

相关问题 更多 >