在“熊猫”系列中,创建以唯一元素为键并将其索引为值的字典

时间:2020-01-23 15:46:34

标签: python pandas

目标是从pandas列(系列)创建字典,其中键是列的唯一元素,而值是元素所在的行索引。我目前有实现此目的的代码,但我想知道是否有更简单,更轻松的方法来实现此目的:

df = pd.DataFrame(np.random.randint(0,100,size=(1000, 4)), columns=list('ABCD'))
idx = df['A'].reset_index().groupby('A')['index'].apply(tuple).to_dict()

2 个答案:

答案 0 :(得分:4)

这是GroupBy对象的groups属性。它返回一个具有唯一值的字典作为原始DataFrame的键和Index对象。

df.groupby('A').groups

{0: Int64Index([61, 466, 505, 619, 697, 811, 872], dtype='int64'),
 1: Int64Index([125, 254, 278, 330, 390, 396, 670, 732, 748, 849, 871, 880, 882,
                908, 943], dtype='int64'),
 2: Int64Index([77, 283, 401, 543, 544, 693, 816], dtype='int64'),
 ...}

或者如果您真的需要元组:

{k: tuple(v) for k,v in df.groupby('A').groups.items()}

答案 1 :(得分:1)

您可以

#standardSQL
SELECT item, var1, CONCAT(var1, item) var2 FROM (
  SELECT item, CONCAT('v2', IFNULL(var, '')) var1 FROM (
    SELECT item, 
      STRING_AGG(item, '') OVER(ORDER BY item ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) var
    FROM `project.dataset.table`
  )
)