首页 > 解决方案 > 从 Pandas 中的文件名中去除月份和年份

问题描述

在此处输入图像描述

这是我的数据集的样子,所以你们能帮我创建 2 个新列(即月份和年份),它们从文件名中获取月份和年份,像这样有很多包含整个月份的文件,所以请帮我获取文件名中的所有月份和年份并将其插入新列。

标签: pythonpandas

解决方案


年份总是在同一个地方 -[-9:-5]它从字符串的末尾开始计算字符。

如果您使用拆分文件名," "那么您将获得列表并且月份将具有索引-2

import pandas as pd

df = pd.DataFrame({
    'filename':[
        "102 RB loss Chamdor June 2018.xlsx",
        "102 RB loss Chamdor Januray 2018.xlsx",
    ]})

df['year'] = df['filename'].str[-9:-5]
df['month'] = df['filename'].apply(lambda x:x.split(" ")[-2])

print(df)

结果

                                filename  year    month
0     102 RB loss Chamdor June 2018.xlsx  2018     June
1  102 RB loss Chamdor Januray 2018.xlsx  2018  Januray

编辑:正如@SpghttCd 所说,apply()您可以使用

df['month'] = df['filename'].str.split().str[-2]

如果您有更复杂的名称,那么您可以尝试正则表达式

df['year'] = df['filename'].str.extract('(\d{4})')
df['month'] = df['filename'].str.extract('(June|Januray|names|of|other|months)')

推荐阅读