繁体   English   中英

根据值的计数在新列 pandas 中分配相等的权重

[英]Assign equal weights in new column pandas based on count of values

我有以下df

dictionary1 = {'trade_date': {1350: 20151201,
  6175: 20151201,
  3100: 20151201,
  5650: 20151201,
  3575: 20151201,
     1: 20170301,
     2: 20170301},
 'comId': {1350: '257762',
  6175: '1038328',
  3100: '315476',
  5650: '658776',
  3575: '329376',
     1: '123456',
     2: '987654'},
 'return': {1350: -0.0018,
  6175: 0.0023,
  3100: -0.0413,
  5650: 0.1266,
  3575: 0.0221,
  1: 0.9,
  2: 0.01}}
df1 = pd.DataFrame(dictionary1)

我想创建一个名为weights的新列,并根据特定trade_date的条目数分配相等的权重。

也就是说,output应该是这样的:

dictionary2 = {'trade_date': {1350: 20151201,
  6175: 20151201,
  3100: 20151201,
  5650: 20151201,
  3575: 20151201,
     1: 20170301,
     2: 20170301},
 'comId': {1350: '257762',
  6175: '1038328',
  3100: '315476',
  5650: '658776',
  3575: '329376',
     1: '123456',
     2: '987654'},
 'return': {1350: -0.0018,
  6175: 0.0023,
  3100: -0.0413,
  5650: 0.1266,
  3575: 0.0221,
  1: 0.9,
  2: 0.01},
'weights':{1350: 0.2,
  6175: 0.2,
  3100: 0.2,
  5650: 0.2,
  3575: 0.2,
  1: 0.5,
  2: 0.5}}

df2 = pd.DataFrame(dictionary2)

这有五个与trade_date 20151201 关联的值,因此它们在新列weights中的值都为 0.2 (1/5),与trade_date 20170301 关联的值有 2 个,因此它们在新列中的值都为 0.5 (1/2)列weights

任何建议如何做到这一点?

df['weights'] = df.groupby('trade_date')['trade_date'].transform(lambda x: 1/len(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM