import pandas as pd id_value = 0 l=[] for i in range(8): if i < 3: id_value = 1, elif 3 <= i <6: id_value = 2, elif 6 <= i < 9: id_value = 3, elif 9 <= i <12: id_value = 4 elif 12 <= i < 16: id_value = 5 l.append(id_value) df = pd.DataFrame(l) print(df) df.to_csv('static/data/aaa.csv',index=False) print('Save Successful!')
1: 为什么上述if判断后的变量id_value值变成tuple类型了???
2: 而将上述代码的range()扩大为20000,判断条件也加大了之后,改成下面这样:前面的12000判断出的id_value依旧是tuple类型,但是12000之后的判断出的结果又莫名其妙变成了int类型???
3: 我该如何才能避免产生tuple类型的这个bug ???
import pandas as pd id_value = 0 l=[] for i in range(20000): if i < 4000: id_value = 1, elif 4000 <= i <8000: id_value = 2, elif 8000 <= i < 12000: id_value = 3, elif 12000 <= i <16000: id_value = 4 elif 16000 <= i < 20000: id_value = 5 l.append(id_value) df = pd.DataFrame(l) print(df) df.to_csv('static/data/aaa.csv',index=False) print('Save Successful!')
python不要加标点符号
import pandas as pd
id_value = 0
l=[]
for i in range(8):
if i < 3:
id_value = 1
elif 3 <= i <6:
id_value = 2
elif 6 <= i < 9:
id_value = 3
elif 9 <= i <12:
id_value = 4
elif 12 <= i < 16:
id_value = 5
l.append(id_value)
df = pd.DataFrame(l)
print(df)
type(id_value)
a = 1,
type(a) #结果是tuple
if i < 3:
id_value = 1
elif 3 <= i <6:
id_value = 2
elif 6 <= i < 9:
id_value = 3
elif 9 <= i <12:
id_value = 4
elif 12 <= i < 16:
id_value = 5
把 =1 = 2 = 3 后面的逗号去掉
用=赋值的时候,值的后面不要加逗号。加逗号
id_value = 1,
就会是元组,就等同是
id_value = (1,)
append的时候强转转换,int(id_value);
起初我认为是赋值地址的问题,但是后来又觉得应该是if语句的问题,最奇怪的是,数据量大了(12000之后)又莫名其妙变回了Int类型。。。这难道和数据池有关系???还是python的一个新bug?。。。。我用的是--------python3.8
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y