我是python的新手,正在玩一些数据。我能够将具有特定错误的标识符代码提取到较小的数据框中。我想从更大的数据集中删除这些记录。但是,某些标识符代码具有多个条目,并非所有条目都存在错误。我仍然想删除发生其中一个错误的所有标识符代码。
我认为 for 循环方法是最好的,但可能需要很长时间,因为每个标识符都必须搜索第二个列表。
我不确定我是否正在以最好的方式考虑这个问题 - 如果您有更好的想法或方法来删除这些记录,请告知!
好的,现在我明白了。粗略地说,这应该可以为您解决问题:
>>> import pandas as pd
>>> df_1=pd.DataFrame(data={"Code": [0,1,2,2,3,4,5,6,6], "Age": [60, 64, 62, "N/A", 77, 88,58, "N/A", 45]})
>>> df_2=pd.DataFrame(data={"Code": [2,4,5]})
>>> df_1
Age Code
0 60 0
1 64 1
2 62 2
3 N/A 2
4 77 3
5 88 4
6 58 5
7 N/A 6
8 45 6
>>> df_3 = df_1.merge(df_2, on="Code", how="left", indicator=True)
>>> df_3
Age Code _merge
0 60 0 left_only
1 64 1 left_only
2 62 2 both
3 N/A 2 both
4 77 3 left_only
5 88 4 both
6 58 5 both
7 N/A 6 left_only
8 45 6 left_only
>>> df_final = df_3[["Age", "Code"]][df_3["_merge"]=="left_only"]
>>> df_final
Age Code
0 60 0
1 64 1
4 77 3
7 N/A 6
8 45 6
裁判:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html