Python根据另一列转置一列

时间:2018-11-26 16:45:51

标签: python transpose

我正在尝试使用Pandas将第一张图片中的“值”列转置为第二张图片,其中每个ID都有一行并且所有值水平列出。

我对Python有点生疏,但是觉得这应该不太困难,并且在思考从哪里开始时遇到了麻烦。

任何帮助表示赞赏。

Staring data enter image description here

1 个答案:

答案 0 :(得分:1)

假设您正在使用pandas dataframe,这是一种快速的解决方法:

# Creating a dummy df
df = pd.DataFrame([[2, 2, 8, 5, 97, 4], ['A','A', 'B','C','C','C']]).T
df.columns = ['Value', 'ID']
df

    Value   ID
0   2       A
1   2       A
2   8       B
3   5       C
4   97      C
5   4       C

# Expected dataframe
dfn = pd.DataFrame(df.groupby(df.ID)['Value'].apply(lambda x: x.values).values.tolist(), index=df.ID.unique())
dfn

    0   1       2
A   2   2.0     NaN
B   8   NaN     NaN
C   5   97.0    4.0

dfn.columns = ['Value'+str(i) for i in range(1, len(dfn.columns)+1)]
dfn.index.name = 'ID'
dfn

ID  Value1  Value2  Value3
A   2        2.0    NaN
B   8        NaN    NaN
C   5        97.0   4.0