python 如何将表中的多列转换为列表

rekjcdws  于 2023-03-06  发布在  Python
关注(0)|答案(2)|浏览(172)

如何将标签1转换为标签2

df = pd.DataFrame({'A': [3, 5], 'B': [4, 6], 'Z': [6, 8]}, index=[1, 100])

我想Pandasdf.melt可能会有帮助,但我不确定

k4emjkb1

k4emjkb11#

您可以将 Dataframe 扁平化并操作索引以获得预期输出:

out = (df.unstack().sort_index(level=1)
         .set_axis([f'{j}{i}' for i in df.index for j in df.columns])
         .rename_axis('var').rename('val').reset_index())

输出:

>>> out
    var  val
0    A1    3
1    B1    4
2    Z1    6
3  A100    5
4  B100    6
5  Z100    8
ej83mcc0

ej83mcc02#

使用DataFrame.melt,将索引值添加到col1列,然后对索引进行排序:

df1 = df.melt(ignore_index=False, var_name='col1', value_name='col2')
df1['col1'] += df1.index.astype(str)
df1 = df1.sort_index(ignore_index=True)
print (df1)
   col1  col2
0    A1     3
1    B1     4
2    Z1     6
3  A100     5
4  B100     6
5  Z100     8

或者使用DataFrame.stack,连接多索引值并转换为DataFrame

s = df.stack()
s.index = [f'{b}{a}' for a, b in s.index]
df1 = s.rename_axis('col1').reset_index(name='col2')
print (df1)
   col1  col2
0    A1     3
1    B1     4
2    Z1     6
3  A100     5
4  B100     6
5  Z100     8

相关问题