Python Pandas函数将数据帧线性化
我经常想线性化一个数据帧。 比如说,Python Pandas函数将数据帧线性化,python,pandas,dataframe,Python,Pandas,Dataframe,我经常想线性化一个数据帧。 比如说, a b 1 l m 2 n o 到 我使用这个自定义代码来线性化数据帧 import pandas as pd def unstack2df(df,coln='columns',idxn='index',col='value'): if df.columns.name is None: df.columns.name=coln if df.index.name is None: df.index.nam
a b
1 l m
2 n o
到
我使用这个自定义代码来线性化数据帧
import pandas as pd
def unstack2df(df,coln='columns',idxn='index',col='value'):
if df.columns.name is None:
df.columns.name=coln
if df.index.name is None:
df.index.name=idxn
df=df.unstack()
df.name=col
return pd.DataFrame(df).reset_index()
我想知道pandas中是否有内置模块可以做到这一点。IIUC:
df.unstack().rename_axis(['columns', 'index']).reset_index(name = 'value')
输出:
columns index value
0 a 1 l
1 a 2 n
2 b 1 m
3 b 2 o
您可以在将索引提升到系列后使用。然后,如果需要,可以对列/行进行排序和重命名
res = pd.melt(df.assign(index=df.index), id_vars=['index'])
print(res)
index variable value
0 1 a l
1 2 a n
2 1 b m
3 2 b o
更详细但等效的版本:
df = df.reset_index()
res = pd.melt(df, id_vars=['index'])
df = df.reset_index()
res = pd.melt(df, id_vars=['index'])