Python将删除重复的行,并在CSV中保留具有更多值的行

Python将删除重复的行,并在CSV中保留具有更多值的行,python,pandas,csv,duplicates,Python,Pandas,Csv,Duplicates,我有如下所示的2个CSV文件和结果,我想在XXX位置编写代码,删除结果中的任何重复行,但要保留列值最大的行,例如,我想保留名称a和ADA,而不是NaN行。我的代码在下面 order phone name a aa 1 b bb 2 c cc 3 order phone ad name a aa 1 ada b

我有如下所示的2个CSV文件和结果,我想在XXX位置编写代码,删除结果中的任何重复行,但要保留列值最大的行,例如,我想保留名称a和ADA,而不是NaN行。我的代码在下面

    order  phone
name             
a       aa      1
b       bb      2
c       cc      3
     order  phone   ad
name                  
a       aa      1  ada
b       bb      2  adb
c       cc      3  adc
d       dd      4  add
     order  phone   ad
name                  
a       aa      1  NaN
b       bb      2  NaN
c       cc      3  NaN
a       aa      1  ada
b       bb      2  adb
c       cc      3  adc
d       dd      4  add   


 import csv
import os
import pandas as pd

df1 = pd.read_csv(r"1.csv",
                  index_col=[0], parse_dates=[0])
df2 = pd.read_csv(r"2.csv",
                  index_col=[0], parse_dates=[0])

print(df1)
print(df2)
finaldf = pd.concat([df1, df2], axis=0, join='outer', sort=False)
df = finaldf.loc[:,~finaldf.columns.duplicated()]
XXXX
print(finaldf)
print(df)

export_csv = df.to_csv(r'3.csv', index = None, header=True)

您可以对包含NAs的列的值进行排序,以将NAs移动到df的底部。
然后,使用drop_duplicates将保留第一行和具有NAs的drop行,因为它们位于最后一行的底部

df.sort_values(by="ad", na_position='last', inplace=True)
df.drop_duplicates(subset=["order", "phone"], keep="first", inplace=True)
另一种在不使用NAs的情况下正确执行此操作的方法

df = pd.merge(df1, df2, how='outer').set_index(df1.index)

groupby name并使用maxOr sort by value列进行聚合,并使用keep first删除重复项