Python 将列转换为不带科学符号的字符串
很多问题都解决了这个问题,但没有一个解决方案能完全满足我的需要 我有一个数据框,有两列数字,每列10-20位。这些实际上是ID,我想将它们连接起来。看起来最好先将值转换为字符串 然而,当使用Python 将列转换为不带科学符号的字符串,python,pandas,Python,Pandas,很多问题都解决了这个问题,但没有一个解决方案能完全满足我的需要 我有一个数据框,有两列数字,每列10-20位。这些实际上是ID,我想将它们连接起来。看起来最好先将值转换为字符串 然而,当使用.astype(str)转换时,熊猫保留了科学符号,它不会飞 我尝试过的事情: 已尝试:在read\u csv() 结果:df.dtypes仍然列出“对象”,值仍然显示在sci中。符号 已尝试:pd.set\u选项('display.float\u格式',lambda x:'%0.f'%x) 结果:在df.h
.astype(str)
转换时,熊猫保留了科学符号,它不会飞
我尝试过的事情:
已尝试:在read\u csv()
结果:df.dtypes
仍然列出“对象”,值仍然显示在sci中。符号
已尝试:pd.set\u选项('display.float\u格式',lambda x:'%0.f'%x)
结果:在df.head()
中显示良好,但在强制使用字符串和使用+运算符连接时,恢复为科学表示法
已尝试:强制为int、str或str(int(x))
结果:当我使用
int()
强制一个值时,int起作用,但当我使用astype(int)
时,int不起作用。将.apply()
与int()
一起使用会引发“无效的文字长度(),以10为基数”错误
这感觉应该非常简单,急于找出我遗漏了什么。您尝试的设置了显示格式。您可以在数据帧中将浮点数格式化为字符串
import numpy as np
import pandas as pd
import numpy as np
作为pd进口熊猫
df=pd.DataFrame(data={'a':np.random.randint(low=1,high=100,size=10)*1e20,'b':np.random.randint(low=1,high=100,size=10)*1e20})
df.apply(lambda x: '{0:20.0f}|{1:20.0f}'.format(x.a,x.b),axis=1)
Out[34]:
0 9699999999999998951424|4600000000000000000000
1 300000000000000000000|2800000000000000000000
2 9400000000000000000000|9000000000000000000000
3 2100000000000000000000|4500000000000000000000
4 5900000000000000000000|4800000000000000000000
5 7700000000000000000000|6200000000000000000000
6 1600000000000000000000|8000000000000000000000
7 100000000000000000000|400000000000000000000
8 9699999999999998951424|8000000000000000000000
9 4500000000000000000000|3500000000000000000000
谢谢,这是一个很好的简单解决方案。尽管如此,仍在研究这个问题,因为尝试实现这个解决方案实际上在我的数据中发现了一个错误,pandas将一些值解析为float。一旦我解决了这个问题,我想这就行了。是的,忘了点击“正确答案”。再次感谢!对于后代:我只需要编写一个apply()函数,将每一行转换为float64,然后使用您的技术进行连接。有些是不可强制转换的,因此函数丢弃了这些行。