小编ycx*_*ycx的帖子

float()对象id创建顺序

float(1.0) is float(1.0) #True
float(1) is float(1) #False
Run Code Online (Sandbox Code Playgroud)

我已将float()奇怪性与此对象创建顺序隔离开来,因为

x1 = float(1)
x2 = float(1)
x1 is x2 #False
id(x1) == id(x2) #False
y1 = float(1.0)
y2 = float(1.0)
y1 is y2 #True
id(y1) == id(y2) #True
Run Code Online (Sandbox Code Playgroud)

注意:我已经检查了浮点数的精度,这不是发生这种情况的原因.

我想了解Python为何以及如何决定创建浮动对象.为什么float(1.0)指向同一个对象,而float(1)指向两个不同的对象,当它们被创建两次时?

另外,有待进一步参考:

float(1) is float(1) #False
id(float(1)) == id(float(1)) #True
float(1.0) is float(1.0) #True
id(float(1.0)) == id(float(1.0)) #True
Run Code Online (Sandbox Code Playgroud)

python floating-point python-3.x

6
推荐指数
1
解决办法
116
查看次数

熊猫groupby转换自定义功能

是否可以使用自定义函数进行groupby转换?

data = {
        'a':['a1','a2','a3','a4','a5'],
        'b':['b1','b1','b2','b2','b1'],
        'c':[55,44.2,33.3,-66.5,0],
        'd':[10,100,1000,10000,100000],
        }

import pandas as pd
df = pd.DataFrame.from_dict(data)

df['e'] = df.groupby(['b'])['c'].transform(sum) #this works as expected
print (df)
#    a   b     c       d     e
#0  a1  b1  55.0      10  99.2
#1  a2  b1  44.2     100  99.2
#2  a3  b2  33.3    1000 -33.2
#3  a4  b2 -66.5   10000 -33.2
#4  a5  b1   0.0  100000  99.2

def custom_calc(x, y):
    return (x * y)

#obviously wrong code here
df['e'] = df.groupby(['b'])['c'].transform(custom_calc(df['c'], df['d'])) 
Run Code Online (Sandbox Code Playgroud)

从上面的示例可以看出,我想要的是探索将自定义函数传递到中的可能性.transform()

我知道它 …

python pandas

3
推荐指数
1
解决办法
965
查看次数

标签 统计

python ×2

floating-point ×1

pandas ×1

python-3.x ×1