Как мне объединить несколько повторяющихся строк с разными значениями столбцов с помощью pandas

#python #pandas #csv

Вопрос:

Я пытаюсь объединить несколько разных файлов CSV. Проблема в том, что при объединении всех файлов CSV я получаю несколько повторяющихся строк с разными значениями столбцов. Я бы хотел, чтобы в этой строке не было повторяющихся строк и значений всех столбцов.

Вот визуализация конечного результата, которого я пытаюсь достичь. 1,2

Я надеюсь, что формат опроса понятен. Заранее спасибо

Комментарии:

1. df.groupby(level=0).agg('first') предполагая, что значения группировки являются вашим индексом, и эти нули считываются как распознаваемое pandas отсутствующее значение (т.Е. NaN ).

Ответ №1:

Вы могли бы взглянуть на библиотеку convtools, которая предоставляет множество примитивов обработки данных.

Пожалуйста, дайте мне знать, если вы проверите приведенное ниже и оно вам по какой-то причине не подходит:

 from convtools import conversion as c
from convtools.contrib.tables import Table

files = [
    "tmp/input_1.csv",
    "tmp/input_2.csv",
]
# tables are lazy and only read first header row
table = Table.from_csv(files[0], header=True)
for f in files[1:]:
    table = table.chain(Table.from_csv(f, header=True), fill_value="")

# remember the header
header = table.columns

# prepare converter, which groups by first column and aggregates as many
# columns as columns in the resulting table
converter = (
    c.group_by(c.item(0))
    .aggregate(
        [c.item(0)]
          [
            # consider replacing with c.ReduceFuncs.Last
            c.ReduceFuncs.First(c.item(i), where=c.item(i) != "")
            for i in range(1, len(header))
        ]
    )
    .gen_converter()
)

# aggregation step
processed_rows = converter(table.into_iter_rows(list))
# dropping to disk
Table.from_rows(processed_rows, header=header).into_csv("tmp/out.csv")