簡體   English   中英

熊貓df到字典的值作為從df列聚合的python列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM