Я сравниваю один столбец ('label') из нескольких почти идентичных файлов cvs.Как я могу использовать pandas для поиска только строк с разными значениями столбцов?
Я написал код, который создает новый кадр данных из файлов, которые я сравниваю:
def main(argv):
dirs = sys.argv[1:]
print ("Directorys to process:"+ str(dirs))
files = glob.glob(dirs[0]+"/*.csv")
files = [f.replace(dirs[0]+"/","") for f in files]
print ("files to process:"+str(files))
dfList =[dirs]
dfLabel = pd.DataFrame()
resultdf = pd.DataFrame()
for file in range(0,len(files)):
filename = files[file]
for index in range(0,len(dirs)):
dirname = dirs[index]
dfItem = pd.read_csv(dirname+"/"+filename)
resultdf[dirname] = dfItem['label']
resultdf.fillna(value=0, inplace=True)
resultdf['mode_average'] = resultdf.mode(axis=1)
# new step to remove rows where all values are equal
resultdf.to_csv("Comparison_of_"+filename,index=False)
if __name__ == "__main__":
main(sys.argv[1:])
Это работает так, как я хочу его, но я действительно заинтересован только в том, чтобы ряды где один из моих входных файлов отличается. Я ожидаю, что они будут одинаковыми в большинстве случаев, и есть сотни или тысячи строк. Есть ли встроенный способ оценки и возврата только строк, в которых одно или несколько значений в этой строке различаются? Количество файлов и каталогов, в которых я выполняю сравнение, может колебаться.
Правильно ли я понимаю, что вы хотите собрать все уникальные строки по многим CSV-файлам в одном файле/dataframe? – Marat
Если вы создаете пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), это облегчает нам помощь. –
Я хочу собрать уникальные строки DataFrame, которые были сформированы, когда я собрал столбец меток из нескольких файлов. Например, существует 3 каталога, A, B C. Каждый содержит файл1.csv и содержит столбец меток. Содержимое столбца метки всегда либо пустое, либо содержит один или два. В этом примере пусть файл1 в A и C будет идентичным. В A и B каждая четвертая строка имеет 2. Файл file1.csv в каталоге B почти идентичен, но в 3 случаях вместо них не помечено ничего. Я хочу найти эти три строки. Результат должен содержать исходный индекс строки. –