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)]
才能获取新行。