如何处理Python中的无穷大值,并将列的其余部分转换为float?
我有一个包含5列的数据帧,其中一列有多个无穷大值(UTF-8编码)。我使用以下代码读取文件并构建df如何处理Python中的无穷大值,并将列的其余部分转换为float?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含5列的数据帧,其中一列有多个无穷大值(UTF-8编码)。我使用以下代码读取文件并构建df df = pd.read_csv(file,decimal=',',delimiter=';',header=[0,1],encoding = 'utf-8',low_memory=False) infinity = df['Kanal C'].loc[250471] print(infinity) print (df) print (df.dtypes) 打印df和数据类型后的输出如下
df = pd.read_csv(file,decimal=',',delimiter=';',header=[0,1],encoding = 'utf-8',low_memory=False)
infinity = df['Kanal C'].loc[250471]
print(infinity)
print (df)
print (df.dtypes)
打印df和数据类型后的输出如下
(V) ∞
Name: 250471, dtype: object
Zeit Kanal A Kanal B Kanal C Kanal D
(ms) (V) (V) (V) (V)
0 -10.000087 0.079202 0.031558 -2,38404300 0.159326
1 -10.000031 0.079202 0.047367 -2,38404300 0.000000
2 -9.999975 0.039524 0.063177 -2,38404300 0.000000
3 -9.999919 0.039524 0.063177 -2,46339800 0.159326
4 -9.999863 0.079202 0.015748 -2,54306100 0.000000
... ... ... ... ... ...
892856 39.999846 0.039524 0.047367 -1,98665100 0.000000
892857 39.999902 0.039524 0.063177 -1,98665100 0.000000
892858 39.999958 0.039524 0.063177 -1,98665100 0.000000
892859 40.000014 0.039524 0.047367 -2,06600600 0.159326
892860 40.000070 0.039524 0.063177 -2,06600600 0.159326
[892861 rows x 5 columns]
Zeit (ms) float64
Kanal A (V) float64
Kanal B (V) float64
Kanal C (V) object
Kanal D (V) float64
dtype: object
现在名为
kanalc
的列有多个无穷大值,因此无法转换为float。我已经阅读并尝试了很多这方面的内容来替换、删除、删除这些值和行,但没有任何效果。我想从数据帧中删除或替换所有那些“无穷大”字符,并想将KanalC转换为与其余列一样的float 我找到了一种使用python解码函数定义无穷符号的方法,这解决了我的大部分问题
inf = b'\xe2\x88\x9e'.decode('utf-8')
pd.to_numeric(df['kanalc'],errors='concurve')
?是的,我试过这个。我得到以下错误类型错误:arg必须是列表、元组、1-d数组或序列请在问题中以文本而不是图片的形式包含输出,因为这会使人们在某些设备或辅助技术上更难阅读您说您尝试过替换、删除、删除值和行,“但你们并没有说你们真正想要达到的目标是什么。”龙的观点指出!您的问题不是关于无穷大值(np.inf
和-np.inf
)本身,而是关于从CSV.yes读取时处理无穷大字符。确切地由于编码的原因,这些字符无法正确读取。因此,我找到了正确的编码,并使用.decode定义了字符