gpt4 book ai didi

python - 用随机数替换 Pandas 数据框中的唯一值

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:12 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,我想用随机正态数替换一些唯一值。在下面的示例中,要替换的值为 0。

import numpy as np
import pandas as pd

dates = pd.date_range('20160101', periods=10)
x = [1.0,2.0,10.0,9.0,0,7.0,6.0,0,3.0,9.0]
df = pd.DataFrame(x,index=dates,columns=['A'])

A
2016-01-01 1.000000
2016-01-02 2.000000
2016-01-03 10.000000
2016-01-04 9.000000
2016-01-05 0.000000
2016-01-06 7.000000
2016-01-07 6.000000
2016-01-08 0.000000
2016-01-09 3.000000
2016-01-10 9.000000

这是我的:

df['A'] = df.A.replace(to_replace =0, value =  np.random.normal(0,1))

用相同的值替换零。

A
2016-01-01 1.000000
2016-01-02 2.000000
2016-01-03 10.000000
2016-01-04 9.000000
2016-01-05 6.993988
2016-01-06 7.000000
2016-01-07 6.000000
2016-01-08 6.993988
2016-01-09 3.000000
2016-01-10 9.000000

我想要不同的值。我该怎么做?

最佳答案

试试这个:

In [51]:
dates = pd.date_range('20160101', periods=10) ​
x = [1.0,2.0,10.0,9.0,0,7.0,6.0,0,3.0,9.0]
df = pd.DataFrame(x,index=dates,columns=['A']) ​
df

Out[51]:
A
2016-01-01 1
2016-01-02 2
2016-01-03 10
2016-01-04 9
2016-01-05 0
2016-01-06 7
2016-01-07 6
2016-01-08 0
2016-01-09 3
2016-01-10 9

In [56]:
df.loc[df['A'] == 0,'A'] = np.random.normal(0,1, len(df.loc[df['A'] == 0]))
df

Out[56]:
A
2016-01-01 1.000000
2016-01-02 2.000000
2016-01-03 10.000000
2016-01-04 9.000000
2016-01-05 0.259048
2016-01-06 7.000000
2016-01-07 6.000000
2016-01-08 0.623833
2016-01-09 3.000000
2016-01-10 9.000000

基本上您需要传递要生成的随机样本的数量,因为您不传递大小,它会返回一个标量值,因此所有替换值都是相同的。

查看文档:http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.normal.html

也可以在这里使用apply:

In [94]:
df.loc[df['A'] == 0,'A'] = df['A'].apply(lambda x: np.random.normal(0,1))
df

Out[94]:
A
2016-01-01 1.000000
2016-01-02 2.000000
2016-01-03 10.000000
2016-01-04 9.000000
2016-01-05 2.794664
2016-01-06 7.000000
2016-01-07 6.000000
2016-01-08 -0.524947
2016-01-09 3.000000
2016-01-10 9.000000

关于python - 用随机数替换 Pandas 数据框中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34792089/

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