示例数据集:
data = {"id":{"0":"1234","1":"1234","2":"4567","3":"4567","4":"4567","5":"89123","6":"89123","7":"89123","8":"18749"},"name":{"0":"bob","1":"rob","2":"bob","3":"rob","4":"sam","5":"bob","6":"rob","7":"sam","8":"dick"}}
df = pd.DataFrame(data=data)
解决方案应该将 id 列中的每个唯一值作为一列,然后将 name 列中的每个关联值作为该行的值。
我知道我可以通过多种方式做到这一点,我问这个的目的是希望看到所有可能的不同方式的例子。
例如,我看到了这个:
df.groupby('id')['name'].apply(list)
我发现这是一个非常棒的解决方案,但我不确定发生了什么。我假设它正在应用一个函数,将与每个 id 值关联的所有值转换为一个列表。我还想知道如何使用堆栈、取消堆栈、转置和枢轴来解决这个问题。
最佳答案
重建
pd.Series(df.name.values, [df.index, df.id.values]).unstack()
1234 18749 4567 89123
0 bob None None None
1 rob None None None
2 None None bob None
3 None None rob None
4 None None sam None
5 None None None bob
6 None None None rob
7 None None None sam
8 None dick None None
set_index
df.set_index('id', append=True).name.unstack()
1234 18749 4567 89123
0 bob None None None
1 rob None None None
2 None None bob None
3 None None rob None
4 None None sam None
5 None None None bob
6 None None None rob
7 None None None sam
8 None dick None None
fill_value=''
df.set_index('id', append=True).name.unstack(fill_value='')
id 1234 18749 4567 89123
0 bob
1 rob
2 bob
3 rob
4 sam
5 bob
6 rob
7 sam
8 dick
关于python - PANDAS reshape 数据领域日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189446/