问题描述
我有一些文件需要拆分。我读到 glob 最终是一个很好的做法。拆分文件后,我可以将其读取到我的 Pandas 数据帧中。我正在使用正则表达式解析日期,并希望将其移交给新列。我的问题是数据帧的长度与解析日期的长度不同。我尝试了 lambda 和列表理解的不同方法,但由于我不习惯它,因此我在获得正确的代码行方面遇到了明显的问题。
我不明白的是,如果我采取例如
df['date'] = 1
它用 1 附加数据框填充系列。但是当它提供一个变量时,它的行为就不一样了。有些对我来说很奇怪。我在这里阅读了一些问题,这些问题都朝着相同的方向发展,但无法适应我的问题。
import glob
import pandas as pd
import re
filelist = glob.glob('./wso-meistdiskutiert/*meistdiskutiert')
type(filelist)
for f in filelist:
df_tmp = pd.read_html(f,decimal='.',thousands='.')[1]
date = re.findall('\d+',f )
df_tmp['date = '] = date
df = df.append(df_tmp)
解决方法
好的,我发现问题了。我在变量 date 中移交了一个具有一个值的列表。 Pandas 显然会尝试遍历列表,并且需要与数据帧具有相同的长度。由于情况并非如此,您将收到错误消息。我现在从列表中取出 str,它工作正常。
for f in filelist:
df_tmp = pd.read_html(f,decimal='.',thousands='.')[1]
datetime = re.findall('\d+',f )
print('datetime is type = ',type(datetime))
datetime = datetime[0] #<-- taking out from list the needed string
df_tmp.insert(11,"date",datetime)
display(df_tmp)