在pandas中是否有惯用的方法为pandas中的一组列中的每个值创建行,如下所示?
import pandas as pd mydf = pd.DataFrame({ 'A': ['A1','A2','A3'], 'B': ['B1','B2','B3'], 'C': ['C1','C2','C3'], 'M1': [1,2,3], 'M2': [4,5,6]}) def reshape(dataframe, index_columns, index_colname): attributes = [c for c in dataframe.columns if c not in index_columns] dfs_out = [] for c in index_columns: proj = [a for l in [[c], attributes] for a in l] tdf = dataframe[proj] proj[0] = index_colname tdf.columns = proj dfs_out.append(tdf) return pd.concat(dfs_out, ignore_index=True) print(reshape(mydf, ['A', 'B', 'C'], 'I'))
输出以下内容:
I M1 M2 0 A1 1 4 1 A2 2 5 2 A3 3 6 3 B1 1 4 4 B2 2 5 5 B3 3 6 6 C1 1 4 7 C2 2 5 8 C3 3 6
Nickil Mavel.. 5
您还可以使用pd.lreshape()
将宽格式数据重新整形为长数据,其中groups
关键字参数接受字典,例如groups ={new_name:columns_to_combine}
pd.lreshape(mydf, dict(I=list("ABC")))
您还可以使用pd.lreshape()
将宽格式数据重新整形为长数据,其中groups
关键字参数接受字典,例如groups ={new_name:columns_to_combine}
pd.lreshape(mydf, dict(I=list("ABC")))