我是python的新手,我想在我的数据挖掘研究中使用这种美妙的语言。 我现在掌握了一个大数据文件,不幸的是样本身份被定义为附加到数字的字符串,如下所示:
A,B1,B2,B3,C1,C2,C3
0.2,0.456,0.7,1.01,0.91,0.11,0.31
为了让我构建一个有用的分类器,我需要从字母中删除数字,这样我就可以设置一个目标,即
设置(['A','B','C'])
我首先要做的是创建一个带有剥离标题的输出,这样新的csv文件应该是:
A,B,B,B,C,C,C
0.2,0.456,0.7,1.01,0.91,0.11,0.31
因为我拥有的文件相当庞大,所以我希望从我的函数中浏览大数列并从数字中删除它们的标题。可能代码就像:
import numpy as np
import pandas as pnda
#from sklearn.linear_model import Ridge, Lasso
import string
import csv
import os
# Please don't pay attention to the first part of the code, it is just to load the file
def get_file_path(filename):
drkt = os.getcwd()
file_path = os.path.join(drkt,filename)
return file_path
file_path = get_file_path('testing.csv')
def read_csv(file_path):
data_file = open(file_path, 'rU')
reader = csv.reader(data_file)
headers_=reader.next()
print headers_ # Just to see the lines
这肯定是一个非常原始的代码,但我只是想证明我遇到的问题。我基本上只想使用“strip(”0123456789 =,“)”作为标题'行',但我不知道如何达到这一点。我设法剥离标题,但我发现我的代码拉出并剥离整个列,这不是我想要的,我想剥去每个csv日期文件中的第一行。
如果我的信息很长或者我没有很好地解释我的观点,请接受我的道歉。
期待收到你的支持
答案 0 :(得分:1)
正如@whereswalden建议的那样,你几乎就在那里
import csv
def read_csv(file_path):
data_file = open(file_path, 'rU')
reader = csv.reader(data_file)
headers_=reader.next()
print headers_ # ['A', ' B1', ' B2', ' B3', ' C1', ' C2', ' C3']
# Process headers outside of loop
headers_ = [col.strip("0123456789=,") for col in headers_]
print headers_ # ['A', ' B', ' B', ' B', ' C', ' C', ' C']
for row in reader:
# do what you want with the data rows
答案 1 :(得分:0)
如何使用正则表达式将它们删除?
这个将删除标题中的所有整数。
import re
col = "A2"
re.sub(r"\d","",col)
<强> 输出 强>
A
在你的情况下
headers_=reader.next()
headers_ = [re.sub(r"\d","",col) for col in headers_]
# do something with headers_
答案 2 :(得分:-1)
我不完全明白你在问什么,但你在寻找这样的功能吗?
def remove_numbers(l):
#Create string to use for output
output = "";
#loop through the input string
for x in l:
#Test to see what characters are NOT digits
if not x.isdigit():
#If it isn't a digit add it to the output string
output += x
#Return the output string
return output
此函数将字符串作为输入并删除数字字符。运行此输入A, B1, B2, B3, C1, C2, C3
即可获得此输出'A, B, B, B, C, C, C'
。我想你可以在进行其他处理之前运行它。
编辑:正则表达式也可用于实现此目标