Pandas: 将行索引更改为列索引。或相反亦然
Pandas: changing the row indices to column indices. Or Vice versa
import pandas as pd
df = pd.DataFrame(data={'start':[1,2,3],'zone':['a','b','c']});
df['end']=[4,5,6]
df.set_index('zone',drop=True,inplace=True,append=False)
print(df)
start end
zone
a 1 4
b 2 5
c 3 6
我想将此数据框修改为:
zone a b c
start end start end start end
1 4 2 5 3 6
通过将行索引更改为列索引。我需要这个,因为我想稍后融化数据框,所以它会变成一个长 table。但我不知道如何将行索引与列索引一起融化。但是得到这个输出将允许我简单地使用:
pd.melt(df)
获取长table。
如果有办法将列索引更改为行索引,那么我可以跳过将行索引更改为列索引的步骤,并立即获得长 table。
请帮忙。
尝试使用 stack
、to_frame
和 T 进行转置:
df.stack().to_frame().T
输出:
zone a b c
start end start end start end
0 1 4 2 5 3 6
从数组操作和多索引构造中重构。
pd.DataFrame(
df.values.reshape(1, -1),
columns=pd.MultiIndex.from_product([df.index, df.columns])
)
a b c
start end start end start end
0 1 4 2 5 3 6
import pandas as pd
df = pd.DataFrame(data={'start':[1,2,3],'zone':['a','b','c']});
df['end']=[4,5,6]
df.set_index('zone',drop=True,inplace=True,append=False)
print(df)
start end
zone
a 1 4
b 2 5
c 3 6
我想将此数据框修改为:
zone a b c
start end start end start end
1 4 2 5 3 6
通过将行索引更改为列索引。我需要这个,因为我想稍后融化数据框,所以它会变成一个长 table。但我不知道如何将行索引与列索引一起融化。但是得到这个输出将允许我简单地使用:
pd.melt(df)
获取长table。 如果有办法将列索引更改为行索引,那么我可以跳过将行索引更改为列索引的步骤,并立即获得长 table。
请帮忙。
尝试使用 stack
、to_frame
和 T 进行转置:
df.stack().to_frame().T
输出:
zone a b c
start end start end start end
0 1 4 2 5 3 6
从数组操作和多索引构造中重构。
pd.DataFrame(
df.values.reshape(1, -1),
columns=pd.MultiIndex.from_product([df.index, df.columns])
)
a b c
start end start end start end
0 1 4 2 5 3 6