这是一个简短的python代码,其中anaconda2和anaconda3版本之间存在一个非常奇怪的区别:
from django.db import models
from django import forms
from .models import Project
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from PIL import Image
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
fields = ['project_name','project_cost',...(other fields),]
当我以这种方式运行时:
import pandas as pd
def div(x):
to_sum = x['a']
to_sum /= 2
def mul(x):
to_sum = x['a']
to_sum *= 2
a = pd.DataFrame(data=[[10.0, 20.0]], columns=['a', 'b'])
print('init:')
print(a)
div(a)
print('after div:')
print(a)
mul(a)
print('after mul:')
print(a)
我得到的主要是不同版本的不同结果:
echo "python3:" && \
~/work/Programs/Anaconda/anaconda3/bin/python3 tmp.py && \
echo && \
echo "python2:" && \
~/work/Programs/Anaconda/anaconda2/bin/python2 tmp.py
根据我对python的理解,python3运行证明了正确的行为。为什么operator / =不影响python2中的函数参数?甚至更多,为什么然后运算符* =确实会影响它??!
我正在使用官方Anaconda网站上的python和pandas。版本是:(python 3.6.0,pandas 0.19.2)和(python 2.7.13,pandas 0.20.3)
编辑1:
尝试用整数(即python3:
init:
a b
0 10.0 20.0
after div:
a b
0 5.0 20.0
after mul:
a b
0 10.0 20.0
python2:
init:
a b
0 10.0 20.0
after div:
a b
0 10.0 20.0
after mul:
a b
0 20.0 20.0
)给我带来:
a = pd.DataFrame(data=[[10, 20]], columns=['a', 'b'], dtype='int')
答案 0 :(得分:1)
这是Pandas issue 12962。 truffle(development)> web3.eth.getBlock('latest').gasLimit
中的错误导致pandas.core.ops
错过了更新系列而不是返回副本的处理。将Pandas更新到至少0.21应该可以解决问题。