Python:如何从数据帧标头字符串中提取'fake'建模日期并将其转换为新列



我正在处理一个大约60k个文件的列表,这些文件的建模年份范围从1年到59000年。这些60k文件中的每个都在以下结构中(使用的数字是示例):

storm12345 10/6/ 48365
100
7463,75
7464,80
.
.
.

等等,长度不等。前两行是关于数据框的信息,但我特别需要识别并保留"年份",在本例中为48365,因此我可以返回并将整个文件分配为该年份,最好创建一个全新的列,标记为"year",即文件开头显示的年份,并为所有60k文件按照各自的年份执行此操作。

最终产品看起来像这样:

storm12345 10/6/ 48365
100
A, B, year
7463,75,48365
7464,80,48365
.
.
.

以此类推,其中最后一列是年份

作为奖励,我还需要标记列a和B,但是当我使用pd.read_csv并指定header=[0,1]时,我不再能够命名这些列并收到以下错误:

ValueError:指定多索引标头时不能指定名称

谢谢!

读取sep='n'文件,因此DataFrame只包含一列

然后分配第一行和第二行来标记文件。

最后,拆分列。和dropna。

df = pd.read_csv(file, sep='n', header=None, dtype=str)
df['line_1st'] = df.iloc[0, 0]
df['line_2nd'] = df.iloc[1, 0]
df['year'] = df['line_1st'].str.extract(' (d+)$')
df[['A', 'B']] = df[0].str.split(',', n=1, expand=True).values
cols = ['A', 'B', 'year','line_1st', 'line_2nd']
dfn = df.dropna()[cols]
print(dfn)
A   B   year                line_1st line_2nd
2  7463  75  48365  storm12345 10/6/ 48365      100
3  7464  80  48365  storm12345 10/6/ 48365      100

相关内容

  • 没有找到相关文章

最新更新