hli*_*117 12 python vectorization scipy pandas
有没有一种方法,我可以使用SciPy的功能就像在地方上一个(或)使用的变体,等等?norm.cdf numpy.arraypandas.DataFramenumpy.applynumpy.apply_along_axs
背景是,我有一个z得分值表,我想将其转换为规范分布的CDF值.我目前使用norm.cdf的scipy这一点.
我目前正在操纵具有非数字值的数据帧.
Name Val1 Val2 Val3 Val4
0 A -1.540369 -0.077779 0.979606 -0.667112
1 B -0.787154 0.048412 0.775444 -0.510904
2 C -0.477234 0.414388 1.250544 -0.411658
3 D -1.430851 0.258759 1.247752 -0.883293
4 E -0.360181 0.485465 1.123589 -0.379157
Run Code Online (Sandbox Code Playgroud)
(使Name变量成为索引是一种解决方案,但在我的实际数据集中,名称不是字母字符.)
要仅修改数字数据,我使用df._get_numeric_data()的私有函数返回包含数据框的数字数据的数据框.但是,没有任何set功能.因此,如果我打电话
norm.cdf(df._get_numeric_data)
Run Code Online (Sandbox Code Playgroud)
这不会改变df原始数据.
我试图通过应用norm.cdf到数字数据框来避免这种情况,因此这会改变我的原始数据集.
我想,我宁愿select_dtypes过_get_numeric_data:
In [11]: df.select_dtypes(include=[np.number])
Out[11]:
Val1 Val2 Val3 Val4
0 -1.540369 -0.077779 0.979606 -0.667112
1 -0.787154 0.048412 0.775444 -0.510904
2 -0.477234 0.414388 1.250544 -0.411658
3 -1.430851 0.258759 1.247752 -0.883293
4 -0.360181 0.485465 1.123589 -0.379157
Run Code Online (Sandbox Code Playgroud)
虽然apply不提供就地,但你可以做类似下面的事情(我认为无论如何都更明确):
num_df = df.select_dtypes(include=[np.number])
df[num_df.columns] = norm.cdf(num_df.values)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16152 次 |
| 最近记录: |