我有一个像这样的数据框:
matrix = [(222, ['A','B','C'], [1,2,3]),
(333, ['A','B','D'], [1,3,5])]
df = pd.DataFrame(matrix, columns=['timestamp', 'variable', 'value'])
timestamp variable value
222 ['A','B','C'] [1,2,3]
333 ['A','B','D'] [1,3,5]
并想旋转它以便保留 timestamp
值,variable
列中的唯一值成为附加列,并且 value< 中的值
在各自的列中排序。
输出应该如下所示:
timestamp A B C D
222 1 2 3 nan
333 1 3 nan 5
任何帮助将不胜感激! :)
最佳答案
使用 unnest首先,然后只是 pivot
unnesting(df,['variable','value']).pivot(*df.columns)
Out[79]:
variable A B C D
timestamp
222 1.0 2.0 3.0 NaN
333 1.0 3.0 NaN 5.0
def unnesting(df, explode):
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx
return df1.join(df.drop(explode, 1), how='left')
关于python - 具有两列列表的旋转数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170814/