gpt4 book ai didi

Python-将一个numpy数组作为列添加到具有不同长度的 Pandas 数据框中

转载 作者:行者123 更新时间:2023-11-28 22:18:00 25 4
gpt4 key购买 nike

我有一个包含多列的 Pandas 数据框 df。其中一列是 Col1,它包含浮点值或 NaN:

df
+----+------+-----+
| No | Col1 | ... |
+----+------+-----+
| 12 | 10 | ... |
| 23 | NaN | ... |
| 34 | 5 | ... |
| 45 | NaN | ... |
| 54 | 22 | ... |
+----+------+-----+

我在 Col1 上运行一个函数,排除缺失值 (NaN),如下所示:

StandardScaler().fit_transform(df.loc[pd.notnull(df[Col1]), [Col1]])

假设结果是这样的 numpy.ndarray:

+-----+
| Ref |
+-----+
| 2 |
| 5 |
| 1 |
+-----+

请注意,此数组的长度与原始列 Col1 的长度不同。

我需要一个解决方案来将数组 Ref 作为列添加到 df。对于 Col1NaN 的每一行,新列 Ref 也得到 NaN。所需的输出如下所示:

+----+------+-----+-----+
| No | Col1 | ... | Ref |
+----+------+-----+-----+
| 12 | 10 | ... | 2 |
| 23 | NaN | ... | NaN |
| 34 | 5 | ... | 5 |
| 45 | NaN | ... | NaN |
| 54 | 22 | ... | 1 |
+----+------+-----+-----+

最佳答案

我认为您可以分配给由相同 bool 掩码过滤的新列:

from sklearn.preprocessing import StandardScaler

mask = df['Col1'].notnull()
df.loc[mask, 'Ref'] = StandardScaler().fit_transform(df.loc[mask, ['Col1']])
print (df)
No Col1 Ref
0 12 10.0 -0.327089
1 23 NaN NaN
2 34 5.0 -1.027992
3 45 NaN NaN
4 54 22.0 1.355081

详细信息:

print (StandardScaler().fit_transform(df.loc[mask, ['Col1']]))
[[-0.32708852]
[-1.02799249]
[ 1.35508101]]

关于Python-将一个numpy数组作为列添加到具有不同长度的 Pandas 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com