【发布时间】:2023-04-09 13:52:01
【问题描述】:
我在对数据框中的非 NA 值进行分组和转换时遇到问题。
所以我的数据框是这样的:
| Name | Value |
|---|---|
| A | 1 |
| A | 2 |
| A | NaN |
| B | 3 |
| B | 7 |
| B | 9 |
| B | NaN |
我想要的最终输出:
| Name | Value | Weight 1 | Weight 2 |
|---|---|---|---|
| A | 1 | 0.33 | 0.5 |
| A | 2 | 0.33 | 0.5 |
| A | NaN | 0.33 | NaN |
| B | 3 | 0.25 | 0.33 |
| B | 7 | 0.25 | 0.33 |
| B | 9 | 0.25 | 0.33 |
| B | NaN | 0.25 | NaN |
我知道这听起来可能微不足道,但我无法让 Weight 2 在 Name 列的不同分组类别中完美运行。
这是我获取列Weight 1的方法:
df['Weight 1'] = df.groupby(['Name']).transform(lambda x: 1/len(x))
到目前为止,我尝试关注 Weight 2,但引发了 DivisionByZero 警告。输出不正确。
df['Weight 2'] = df.groupby(['Name']).transform(lambda x: 1/np.sum(~np.isnan(x)))
感谢任何帮助。
【问题讨论】:
标签: python pandas dataframe numpy pandas-groupby