我有一個名為last_modified_tracking_df的資料框,它的列為 --> 源檔案、Last_modified_date 和 Target_folder。
我有一個字典last_modified_file_date_dict,它在鍵中有型別檔案名。我想從 last_modified_tracking_df 中洗掉那些檔案在 last_modified_tracking_df 中不存在的行。
我為此撰寫了以下代碼-->
for log_path in last_modified_tracking_df['Source file']:
if log_path not in last_modified_file_date_dict.keys():
last_modified_tracking_df = last_modified_tracking_df[last_modified_tracking_df['Source file'].ne(log_path)]
print(last_modified_tracking_df)
此代碼正在洗掉所需的行,但輸出為
0 C:\test\file1... 2021-07-05T10:38:58 target1
1 C:\test\file2... 2021-10-20T09:18:43 target2
3 C:\test\file4... 2021-10-21T04:54:37 target4
4 C:\test\file5... 2021-10-18T13:28:16 target5
在上面的輸出中,索引被洗掉的行跳過。我的問題是“有沒有更有效的方法來做到這一點?” 和“即使在洗掉行后我怎樣才能獲得連續的索引?” 請幫忙!
uj5u.com熱心網友回復:
使用DataFrame.reset_index(drop=True)作品,并假設您不想將資料框重新分配給新變數,您還需要inplace=True
last_modified_tracking_df.reset_index(drop=True, inplace=True)
否則,如果你想重新分配,你會去
new_df = last_modified_tracking_df.reset_index(drop=True)
這將重置并為每一行提供一個相對于前一行的索引值的連續索引值。
至于檢查行??的值,您可能希望遍歷行 ( DataFrame.iterrows()) 并僅洗掉/洗掉單行,而不是創建沒有所述行的新資料框:
for index, row in last_modified_tracking_df.iterrows():
if row["Source file"] not in last_modified_file_date_dict.keys():
df.drop(index, inplace=True)
uj5u.com熱心網友回復:
或者,您可以完全擺脫回圈,并使用isin代替ne
所以假設你有
>>> last_modified_tracking_df
source_file last_modified_date target_folder
0 C:\test\file1 2021-07-05T10:38:58 target1
1 C:\test\file2 2021-10-20T09:18:43 target2
2 C:\test\file3 2021-10-18T13:28:16 target3
3 C:\test\file4 2021-10-21T04:54:37 target4
4 C:\test\file5 2021-10-18T13:28:16 target5
5 C:\test\file6 2021-10-18T13:28:16 target6
和
>>> last_modified_file_date_dict
{'C:\\test\\file1': '2021-07-05T10:38:58',
'C:\\test\\file3': '2021-10-21T04:54:37'}
打電話就行
last_modified_tracking_df = last_modified_tracking_df[
last_modified_tracking_df["source_file"].isin(last_modified_file_date_dict.keys())
].reset_index(drop=True)
結果
>>> last_modified_tracking_df
source_file last_modified_date target_folder
0 C:\test\file1 2021-07-05T10:38:58 target1
1 C:\test\file3 2021-10-18T13:28:16 target3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345065.html
