我有多个csv文件,命名为2C-BEB-29-2009-01- 18.csv、2C-BEB-29-2010-02- 18.csv、2C-BEB-29-2010-03-28.csv、2C-ISI-12-2010-01-01.csv等。
- 2C-零件在所有csv文件中均为默认值。
- BEB表示记录设备的名称
- 29代表用户ID
- 2009-01-18表示录制日期。
我有大约150个不同的ID和他们的录音与不同的设备。我想自动化以下的方法,我已经做了一个单一的用户ID的所有用户ID
当我对单个用户使用以下代码时,即pattern ='2C-BEB-29-*. csv',以字符串格式。请注意,我在正确的目录中。
def pd_read_pattern(pattern):
files = glob.glob(pattern)
df = pd.DataFrame()
for f in files:
csv_file = open(f)
a = pd.read_csv(f,sep='\s+|;|,', engine='python')
#date column should be changed depending on patient id
a['date'] = str(csv_file.name).rsplit('29-',1)[-1].rsplit('.',1)[0]
#df = df.append(a)
#df = df[df['hf']!=0]
return df.reset_index(drop=True)
为了将上面的代码应用于所有用户ID,我以下面的方式读取了CSV文件,并将它们保存到列表中。为了避免重复的ID,我在此代码片段的末尾将列表转换为集合。
import glob
lst=[]
for name in glob.glob('*.csv'):
if len(name)>15:
a = name.split('-',3)[0]+"-"+name.split('-',3)[1]+"-"+name.split('-',3)[2]+'-*'
lst.append(a)
lst = set(lst)
现在,具有以下示例格式的唯一ID的名称:'2C-BEB-29-*. csv'。在以下代码片段的帮助下,我尝试读取用户ID。但是,我在www.example.com _csv行中遇到unicode/decode错误pd.read。您能帮助我解决此问题吗?
for file in lst:
#print(type(file))
files = glob.glob(file)
#print(files)
df = pd.DataFrame()
for f in files:
csv_file = open(f)
#print(f, type(f))
a = pd.read_csv(f,sep='\s+|;|,', engine='python')
#date column should be changed depending on patient id
#a['date'] = str(csv_file.name).rsplit(f.split('-',3)[2]+'-',1)[-1].rsplit('.',1)[0]
#df = df.append(a)
#df = df[df['hf']!=0]
#return df.reset_index(drop=True)
1条答案
按热度按时间42fyovps1#
首先,
然后,将您的代码片段替换为
用这个