Python 从更新的数据框中识别修改的行

Python 从更新的数据框中识别修改的行,python,pandas,dataframe,Python,Pandas,Dataframe,我收集数据并进行分析。在这种情况下,有时收集的数据(如昨天或上周)缺少一个值,可能会在以后有记录时更新,或者行值可能会更改。我的意思是可以修改行值,请参见示例数据帧: 要接收的第一个数据帧 import pandas as pd cars = {'Date': ['2020-09-11','2020-10-11','2021-01-12','2020-01-03', '2021-02-01'], 'Brand': ['Honda Civic','Toyota Corolla',

我收集数据并进行分析。在这种情况下,有时收集的数据(如昨天或上周)缺少一个值,可能会在以后有记录时更新,或者行值可能会更改。我的意思是可以修改行值,请参见示例数据帧:

要接收的第一个数据帧

import pandas as pd

cars = {'Date': ['2020-09-11','2020-10-11','2021-01-12','2020-01-03', '2021-02-01'],
        'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Mercedes'],
        'Price': [22000,25000,27000,35000,45000],
        'Mileage': [2000,'NAN',47000,3500,5000]
        }

df = pd.DataFrame(cars, columns = ['Date','Brand', 'Price', 'Mileage'])

print (df)

import pandas as pd

cars2 = {'Date': ['2020-09-11','2020-10-11','2021-01-12','2020-01-03', '2021-02-01'],
        'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Mercedes'],
        'Price': [22000,5000,27000,35000,45000],
        'Mileage': [2000,100,47000,3500,600]
        }

df2 = pd.DataFrame(cars2, columns = ['Date','Brand', 'Price', 'Mileage'])

print (df2)
在第一个数据帧上进行的修改

import pandas as pd

cars = {'Date': ['2020-09-11','2020-10-11','2021-01-12','2020-01-03', '2021-02-01'],
        'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Mercedes'],
        'Price': [22000,25000,27000,35000,45000],
        'Mileage': [2000,'NAN',47000,3500,5000]
        }

df = pd.DataFrame(cars, columns = ['Date','Brand', 'Price', 'Mileage'])

print (df)

import pandas as pd

cars2 = {'Date': ['2020-09-11','2020-10-11','2021-01-12','2020-01-03', '2021-02-01'],
        'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Mercedes'],
        'Price': [22000,5000,27000,35000,45000],
        'Mileage': [2000,100,47000,3500,600]
        }

df2 = pd.DataFrame(cars2, columns = ['Date','Brand', 'Price', 'Mileage'])

print (df2)
现在我想知道如何只选择从第一个数据帧修改的行。我的预期输出是仅获取稍后修改的行。我已经试过了,但它也让我老了

df_diff = pd.concat([df,df2], sort=False).drop_duplicates(keep=False, inplace=False)
预期产出

import pandas as pd

cars3 = {'Date': ['2020-10-11', '2021-02-01'],
        'Brand': ['Toyota Corolla','Mercedes'],
        'Price': [5000,45000],
        'Mileage': [100,600]
        }

df3 = pd.DataFrame(cars3, columns = ['Date','Brand', 'Price', 'Mileage'])

print (df3)

因为有相同的索引和列,所以如果至少有一行
True
by,则可以将其用于比较不相等和测试,并将其过滤入:


如果添加了新行,它会捕获它们吗?@LivingstoneM-那么需要
new=df2[~df2.index.isin(df.index)]
才能获取新行。