#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")