根据从文件名中提取的日期添加带有值的列值的长度 (1) 与索引的长度 (50) 不匹配

问题描述

在这个问题上挣扎了一段时间,很想知道您如何解决它。

我有一些文件需要拆分。我读到 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)