【问题标题】:Retrieve a word from file name in python从python中的文件名中检索一个单词
【发布时间】:2019-01-08 13:15:42
【问题描述】:

我在特定路径中有 5 个 excel 文件的列表,如下所述:'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\**\\*Claypot*.csv'. 5个excel文件的列表和路径如下

['Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\December - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\January2019 - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\November - SVCD\\UAE _ Citymax _ Claypot_BD_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\October - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\sept - svcd\\UAE _ Claypot _ Burdubai_fullcampaignfile.csv']

现在我正在尝试从每个 excel 文件名中检索月份名称,并按照以下代码添加到我的数据框中,但是因为我只能检索 11 月份的月份而感到震惊,这是不正确的。请帮帮我

m=['November','December','October','September','August']
    def extract(folderpath):
        final=glob.glob(folderpath)
        frames = []
        for file in final:
            j=0
            df = pd.read_csv(file, error_bad_lines=False)
            df['Month']=m[j]
            frames.append(df)
            j=j+1
        mergedfile = pd.concat(frames)
        return mergedfile

a=extract('Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\**\\*Claypot*.csv')

Input : a.shape
Ouput : (3232487, 31)

Input : a['Month'].value_counts()
Output : November   3232487
         Name: Month, dtype: int64

【问题讨论】:

  • 你试过什么?你被困在哪里了?还是您希望人们为您工作?
  • 所以你想每次都添加一个只有单词“December”的列?
  • @JoshFriedlander 我想添加一个“月”列,其中数据框中的每一行都只包含“十二月”这个词
  • @LieRyan 我曾尝试使用 for 循环和 if 语句,但卡在了中间
  • 您的代码中有它,df['Month']='December'。你被什么困住了?

标签: python string pandas filenames series


【解决方案1】:

我猜它可以是任何月份,所以为什么不检查几个月:

filename = r'Z:\Ruchika\Citymax_Dec06\SVCDs\December - SVCD\UAE _ Citymax Claypot Burdubai_fullcampaignfile.csv'

for month in ['October', 'November', 'December']: # List of months
    if month in filename:
        print('Month is:', month)

【讨论】:

    【解决方案2】:
    month = [x for x in month_list if x in my_filename][0]
    my_df['month'] = month
    

    【讨论】:

      【解决方案3】:

      您可以将str.splitpd.DataFrame.assign 一起使用:

      file_path = r'Z:\Ruchika\Citymax_Dec06\SVCDs\December - SVCD\UAE _ Citymax Claypot Burdubai_fullcampaignfile.csv'
      
      file_month = file_path.rsplit('\\', 2)[1].split(' - ')[0]  # December
      df = pd.read_csv(file_path).assign(Month=file_month)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多