我正在寻找一种以下列方式在 pandas 中堆叠数据框的方法:
id val
id01 ['a', 'b']
id02 ['b']
id03 []
id04 ['a','c']
到:
id01 'a'
'b'
id02 'b'
id04 'a'
'c'
最佳答案
如果想要 Series
和 MultiIndex
使用 stack
使用 DataFrame
构造函数:
s = pd.DataFrame(df['val'].values.tolist(), index=df['id']).stack()
print (s)
id
id01 0 a
1 b
id02 0 b
id04 0 a
1 c
dtype: object
如果需要DataFrame
加double reset_index
- 首先删除 MultiIndex
的第二级,然后从索引创建列:
df = (pd.DataFrame(df['val'].values.tolist(), index=df['id'])
.stack()
.reset_index(level=1, drop=True)
.reset_index(name='val'))
print (df)
id val
0 id01 a
1 id01 b
2 id02 b
3 id04 a
4 id04 c
最后如果需要替换重复值使用loc
+ duplicated
:
df.loc[df['id'].duplicated(), 'id'] = ''
print (df)
id val
0 id01 a
1 b
2 id02 b
3 id04 a
4 c
关于python - 在 Pandas 中堆叠数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49812523/