我正在尝试从正在读取的文本文件中的数字中删除逗号。我无法这样做。
这就是我读取数据的方式:
def fileLoader(file):
df = pd.DataFrame()
with open(file) as fin:
chk_lst = next(fin).split()
is_h = not any(v[0].isdecimal() for v in chk_lst)
df = pd.concat([df, pd.read_csv(file, sep='\s+', header=None, skiprows=(0, 1)[is_h])], axis=0, ignore_index=True)
return df
当前代码输出(错误)显示为:
ValueError: could not convert string to float: '3,498,300153,90023,90066,30079,60042,20011,60083,771131,000497,400715,00085,40028,40081,500153,900454,00024,5008,0003,000'
TypeError: Could not convert 3,498,300153,90023,90066,30079,60042,20011,60083,771131,000497,400715,00085,40028,40081,500153,900454,00024,5008,0003,000 to numeric
我尝试读取的文件示例如下:
TEST 3,498,300 2.600
ABC 153,900 2.500
CBA 23,900 2.250
NYT 66,300 2.250
我的最终结果应如下:
TEST 3498300 2.600
ABC 153900 2.500
CBA 23900 2.250
NYT 66300 2.250
答案 0 :(得分:1)
我假设您正在阅读的文本文件是csv文件。您可以做的就是使用pd.read_csv中内置的数千个参数。
df = pd.concat([df, pd.read_csv(file, sep='\s+', header=None, skiprows=(0, 1)[is_h])],
axis=0,
ignore_index=True,
thousands=',')
答案 1 :(得分:0)
您可以简单地将逗号替换为“”(空字符串)
example = "TEST 3,498,300 2.600"
example = example.replace(",", "")
print(a)
上面的代码会打印
TEST 3498300 2.600
答案 2 :(得分:0)
使用以下内容(请注意,我暂时未使用标头)
df = pd.read_csv('data.txt', sep='\s+', header=None, thousands=',')
print(df)
0 1 2
0 TEST 3498300 2.60
1 ABC 153900 2.50
2 CBA 23900 2.25
3 NYT 66300 2.25
答案 3 :(得分:0)
类似于@ Thimo1,从您提供的示例开始:
import pandas as pd
df = pd.DataFrame([['TEST', '3,498,300', "2.600"],
['ABC', '153,900', '2.500'],
['CBA', '23,900', '2.250'],
['NYT', '66,300', '2.250']])
以大熊猫为中心的方式是:
df.iloc[:,1] = df.iloc[:,1].str.replace(',','')
这将为您提供:
Out[29]:
0 1 2
0 TEST 3498300 2.600
1 ABC 153900 2.500
2 CBA 23900 2.250
3 NYT 66300 2.250
我认为尽管您更喜欢后两列不是字符串,所以您可以:
df.iloc[:,1] = df.iloc[:,1].astype(int)
df.iloc[:,2] = df.iloc[:,2].astype(float)