我有蟒蛇字典
stockDict = {
'Owned' : ['CTSH', 'GOOGL'],
'Wishlist' : ['LAZY', 'CTSH', 'AAPL']
}更新字典,使其具有不同数组大小的值。@Youness Sadaan的解决方案非常有效!
我想把它转换成数据格式,如下所示:
stockCode Remarks
0 CTSH Owned
1 GOOGL Owned
2 LAZY Wishlist
3 CTSH Wishlist
3 AAPL Wishlist我开始将字典转换成数据格式,并使用pivot_table来实现我所需要的。
stockDf = pd.DataFrame(columns = ["stockCode", "Remarks"])
df = pd.DataFrame([(k, *v) for k, v in stockDict.items()])
df.columns = ['Remarks'] + [f'stock{x}' for x in df.columns[1:]]
display(df)关于如何实现我想要的输出,我陷入了困境。
pd.pivot_table(df, values=['stock1', 'stock2', 'stock3', 'stock4'], index=None, columns='Remarks', aggfunc='first')给我以下内容:
Remarks Owned Wishlist
stock1 CTSH LAZY
stock2 GOOGL AIRG
stock3 None CLSK
stock4 None CTSH有人能帮忙吗?
谢谢。
发布于 2020-08-14 17:25:45
你错过了融化的一步。尝试下面的代码,然后简单地重命名您的列!
stockDict = {'Owned' : ['CTSH', 'GOOGL'],'Wishlist' : ['LAZY', 'AIRG', 'CLSK', 'CTSH']}
df = pd.DataFrame.from_dict(stockDict, orient = 'index')
df.T.melt()发布于 2020-08-14 17:32:23
使用melt()函数会更好、更容易。
我编辑了您的代码以提供您想要的输出:
stockDict = {'Owned' : ['CTSH', 'GOOGL'],'Wishlist' : ['LAZY', 'AIRG', 'CLSK', 'CTSH']}
stockDf = pd.DataFrame(columns = ["stockCode", "Remarks"])
df = pd.DataFrame([(k, *v) for k, v in stockDict.items()])
df.columns = ['Remarks'] + [f'stock{x}' for x in df.columns[1:]]
df3=df.melt(id_vars=['Remarks'], value_vars=['stock1', 'stock2','stock3','stock4'],value_name='stockCode')[['Remarks','stockCode']]
df3=df3.sort_values(by=['Remarks'])
display(df3)输出:
Remarks stockCode
0 Owned CTSH
2 Owned GOOGL
4 Owned None
6 Owned None
1 Wishlist LAZY
3 Wishlist AIRG
5 Wishlist CLSK
7 Wishlist CTSHhttps://stackoverflow.com/questions/63417314
复制相似问题