Python数据帧转置和更改结构

2024-04-25 09:16:42 发布

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

我想转置df1并将每一行的值“分散”到几行中。同时,我不想用列名标记数据,而是将旧列名添加到名为“segment”的新列下的每一行中。你知道吗

下面是我的例子:

df1 = pd.DataFrame(index=['index1', 'index2', 'index3'], 
              columns=["A", "B", "C"], 
              data=[[5,np.nan, "ok"], [7,8,"fine"], ["3rd",100,np.nan]])
df1

我希望结果看起来像第二个数据帧df2:

df2 = pd.DataFrame(index=["index1", "index1", "index1", "index2", "index2", "index2", "index3", "index3", "index3"], 
              columns=['segment', 'value'], 
              data=[["A",5], ["B",np.nan], ["C","ok"], ["A",7], ["B",8], ["C","fine"],["A","3rd"],["B",100],["C",np.nan]])
df2

Tags: columns数据dataframedataindexnpsegmentok
1条回答
网友
1楼 · 发布于 2024-04-25 09:16:42

可以使用DataFrame.stack(dropna=False)方法:

In [102]: df1.stack(dropna=False) \
             .rename_axis(['index','segment']) \
             .reset_index(level=1, name='value')
Out[102]:
       segment value
index
index1       A     5
index1       B   NaN
index1       C    ok
index2       A     7
index2       B     8
index2       C  fine
index3       A   3rd
index3       B   100
index3       C   NaN

相关问题 更多 >