我正在尝试使用Pandas将第一张图片中的“值”列转置为第二张图片,其中每个ID都有一行并且所有值水平列出。
我对Python有点生疏,但是觉得这应该不太困难,并且在思考从哪里开始时遇到了麻烦。
任何帮助表示赞赏。
答案 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