[英]pandas - how to organised dataframe based on date and assign new values to column
[英]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.