Pandas根据第一列将行转置为列

4

我有以下数据框。

Column_1   Column_2
Name       Xxxx
Age        28
Gender     M
Name       yyyy
Age        26
Gender     F

My expected output is

Name   Age   Gender
Xxxx   28    M
yyyy   26    F

我尝试了 df.T(),但它将每个姓名、年龄和性别分别写入单独的列。
如何在 python/pandas 中实现上述输出。
3个回答

3

或者尝试使用groupbyagg以及pd.Series.explode

>>> df.groupby('Column_1').agg(list).T.apply(pd.Series.explode).reset_index(drop=True).rename_axis(columns=None)
  Age Gender  Name
0  28      M  Xxxx
1  26      F  yyyy
>>> 

2

尝试这个:

df1 = pd.DataFrame( {
    'Column_1': ['Name', 'Age', 'Gender', 'Name', 'Age', 'Gender'],
    'Column_2': ['Xxxx', '28', 'M', 'yyyy', '26', 'F']
})
df2 = pd.DataFrame(df1.groupby('Column_1')['Column_2'].apply(list).to_dict())
print(df2)

输出:

   Age Gender  Name
0  28      M   Xxxx
1  26      F   yyyy


2
尝试使用 groupbypivot
df["idx"] = df.groupby("Column_1").cumcount()

>>> df.pivot("idx", "Column_1", "Column_2").reset_index(drop=True).rename_axis(columns=None)
  Age Gender  Name
0  28      M  Xxxx
1  26      F  Yyyy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接