如何基于第一个索引pandas df中的字符串删除行

我试图删除rows从一个pandas df。具体而言,我希望把一切都第一个string在Col A中结束。所以,对于df以下时,string finishes用Mon这样我想删除不使用该值完成任何行。


import pandas as pd


df = pd.DataFrame({

    'Col 1' : ['val1-Mon','val2-Mon','val3-Tues','val4-Tues','val5-Mon','val6-Mon','val7-Mon','val8-Mon'],  

    'Col 2' : ['A','B','A','B','A','B','A','B'], 

     })

df通过使用以下内容,这对于上述内容来说很容易。


df = df[~df['Col 1'].str.contains("Tues")]

但是我的输入data每天都在变化。虽然我想保留Mon今天的所有价值观,但我可能想要Tues明天的价值观。所以我必须进入并手动更新我不想要的那一天。


一致性是第一个值。因此,如果它以结尾Mon,则我希望所有内容都以结尾Mon。如果第一行以结尾Tues,我希望所有内容都以Tuesect结尾。


慕的地8271018
浏览 240回答 2
2回答

ITMISS

我认为需要提取第一个值,然后与str.contains或比较str.endswith:first = df['Col 1'].iloc[0].split('-')[1]#if want check first today day#first = pd.datetime.now().strftime('%a')print (first)Mondf = df[~df['Col 1'].str.contains(first)]#Jon Clements suggestion, thank youdf = df[~df['Col 1'].str.endswith(first)]print (df)       Col 1 Col 22  val3-Tues     A3  val4-Tues     B

偶然的你

通过在上分割创建一天列'-',然后使用.iloc进行过滤以确保我们与第一行匹配:df['Day'] = df['Col 1'].str.split('-').str[-1]filtered = df[df['Day'] == df['Day'].iloc[0]]print(filtered)印刷:      Col 1 Col 2  Day0  val1-Mon     A  Mon1  val2-Mon     B  Mon4  val5-Mon     A  Mon5  val6-Mon     B  Mon6  val7-Mon     A  Mon7  val8-Mon     B  Mon
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python