[英]How to apply a function to a mixed type Pandas DataFrame in place?
[英]How to apply function to dataframe in place
有沒有一種方法,我可以使用像SciPy的功能norm.cdf
上到位 numpy.array
(或pandas.DataFrame
),使用的變體numpy.apply
, numpy.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
(將Name
變量設為索引是一種解決方案,但在我的實際數據集中,名稱不是字母字符。)
為了僅修改數值數據,我使用df._get_numeric_data()
一個私有函數,它返回一個包含數據幀數值數據的數據幀。 但是,沒有set
功能。 因此,如果我打電話
norm.cdf(df._get_numeric_data)
這不會改變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
雖然apply不提供就地,但你可以做類似下面的事情(我認為無論如何都會更明確):
num_df = df.select_dtypes(include=[np.number])
df[num_df.columns] = norm.cdf(num_df.values)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.