我现在的情况是这样的: 散布
0 0.00000787
1 0.00000785
2 0.00000749
3 0.00000788
4 0.00000786
5 0.00000538
6 0.00000472
7 0.00000759
我想在它旁边添加一个新的列,如果spread的值在(例如)0到0.00005之间,那么它是bin a的一部分,如果(例如)在0.00005到0.0006之间,那么bin B(总共有三个bin)。到目前为止,我尝试了:
minspread = df['spread'].min()
maxspread = df['spread'].max()
born = (float(maxspread)-float(minspread))/3
born1 = born + float(minspread)
born2 = float(maxspread) - born
df['Bin'] = df['spread'].apply(lambda x: 'A' if x < born1 else ( 'B' if born1 < x <= born2 else 'C'))
但当我这么做的时候,所有的东西都会被扔进垃圾箱:
spread Bin
0 0.00000787 A
1 0.00000785 A
2 0.00000749 A
3 0.00000788 A
4 0.00000786 A
有没有人知道如何将列“spread”划分为三个具有相同观察数的容器(A-B-C)?谢谢!你知道吗
如果获取错误:
这意味着列类型是Decimal,这对于pandas来说效果很差,应该转换为numeric。你知道吗
一种可能的解决方案是将列乘以一些大的数字,例如10e15,然后转换为整数,以避免在转换为浮点时丢失精度,然后使用^{} :
没有新列的解决方案:
相关问题 更多 >
编程相关推荐