[英]Pandas df to dictionary with values as python lists aggregated from a df column
我有一個熊貓df,其中包含股票的“功能”,如下所示:
我現在正在嘗試創建一個具有唯一扇區作為鍵的字典,並以該值作為該唯一扇區的python代碼列表 ,因此最終得到的內容如下:
{'consumer_discretionary': ['AAP',
'AMZN',
'AN',
'AZO',
'BBBY',
'BBY',
'BWA',
'KMX',
'CCL',
'CBS',
'CHTR',
'CMG',
等等
我可以遍歷pandas df行以創建字典,但我更喜歡使用pythonic解決方案。 到目前為止,此代碼是部分解決方案:
df.set_index('sector')['ticker'].to_dict()
任何反饋表示贊賞。
更新:
@wrwrwr的解決方案
df.set_index('ticker').groupby('sector').groups
部分起作用,但是它返回一個pandas系列作為值,而不是python list 。 關於如何將pandas系列轉換為同一行中的python列表並且無需迭代字典的任何想法?
f.set_index('ticker').groupby('sector').groups
不是您想要的嗎?
例如:
f = DataFrame({
'ticker': ('t1', 't2', 't3'),
'sector': ('sa', 'sb', 'sb'),
'name': ('n1', 'n2', 'n3')})
groups = f.set_index('ticker').groupby('sector').groups
# {'sa': Index(['t1']), 'sb': Index(['t2', 't3'])}
為確保它們具有所需的類型:
{k: list(v) for k, v in f.set_index('ticker').groupby('sector').groups.items()}
要么:
f.set_index('ticker').groupby('sector').apply(lambda g: list(g.index)).to_dict()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.