亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 數據框中的名稱可以同時具有兩個值

Python 數據框中的名稱可以同時具有兩個值

哆啦的時光機 2023-05-16 15:07:26
我有一個像這樣的數據框df.head()NAME     DATE             FLAGTest1    1 April 2020     BeforeTest2    20 May 2020      BeforeTest1    28 May 2020      BeforeTest3    2 June 2020      AfterTest2    3 June 2020      After我想創建另一個數據框,其中包含具有標志值“之前”但不是“之后”的名稱列表,就像在集合中一樣,它類似于 A intersection B-complement。使用上面的 df 數據框,我將在我的新數據框中只獲得一個名稱 - Test1。我正在為如何構建邏輯和使用什么功能而苦苦掙扎。我應該使用循環遍歷所有值還是根據標志值分離數據幀并執行設置操作?只是在尋找可行的解決方案
查看完整描述

2 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

你只需要做兩個過濾器;第一個過濾器檢查flag,然后第二個過濾器刪除任何有 after 標志的東西:


import pandas as pd                                                                                                                                                                                    

df = pd.DataFrame({'name': ['test1', 'test2', 'test3', 'test1', 'test2'], 'flag':['before', 'before', 'after', 'before', 'after']})       

df[~df.name.isin(df[df.flag=='after']['name'])]                                                                                                                                                       

 

    name    flag

0  test1  before

3  test1  before


查看完整回答
反對 回復 2023-05-16
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

這是一種使用 的方法.loc[],它可以在某些情況下防止SettingWithCopyWarning警告(這在這里可能不是問題)。


# Find the NAME such that FLAG == After:

after = df.loc[ df['FLAG'] == 'After', 'NAME' ]


# Filter rows (before comma in .loc[]) and select columns (after comma)

before = df.loc[~df['NAME'].isin(after), ['NAME', 'DATE']]


print(before)

    NAME          DATE

0  Test1  1 April 2020

2  Test1   28 May 2020


查看完整回答
反對 回復 2023-05-16
  • 2 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號