为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2021-05-30 06:49:11
我试图删除rows从一个pandas df。具体而言,我希望把一切都第一个string在Col A中结束。所以,对于df以下时,string finishes用Mon这样我想删除不使用该值完成任何行。import pandas as pddf = 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结尾。
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

我认为需要提取第一个值,然后与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)

Mon


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

#Jon Clements suggestion, thank you

df = df[~df['Col 1'].str.endswith(first)]

print (df)


       Col 1 Col 2

2  val3-Tues     A

3  val4-Tues     B


查看完整回答
反对 回复 2021-06-01
?
偶然的你

TA贡献1841条经验 获得超3个赞

通过在上分割创建一天列'-',然后使用.iloc进行过滤以确保我们与第一行匹配:


df['Day'] = df['Col 1'].str.split('-').str[-1]


filtered = df[df['Day'] == df['Day'].iloc[0]]


print(filtered)

印刷:


      Col 1 Col 2  Day

0  val1-Mon     A  Mon

1  val2-Mon     B  Mon

4  val5-Mon     A  Mon

5  val6-Mon     B  Mon

6  val7-Mon     A  Mon

7  val8-Mon     B  Mon


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号