Я пытаюсь исправить полученный мной CSV-файл, в который в данные были вставлены новые строки, эффективно разбивая одну строку данных на несколько с неполными столбцами. Разрывы строк размещаются вместо пробела после завершенного слова.
В зависимости от языкового стандарта десятичные точки обозначаются запятыми (см. столбцы E и F).
Даты в столбце A могут отображаться как дубликаты, но должны оставаться отдельными.
import pandas as pd
df1 = pd.read_csv("input.csv", sep=";")
Пока я не сортирую input.csv, все данные будут более или менее находиться в правильном положении. У меня есть две идеи, как решить эту проблему:
Перебрать все строки. Если в первом столбце A есть какое-либо значение, перейдите к следующей строке.
Если в столбце A также есть значение, строка i-1 была правильной (см.: строка 7 правильная).
Если значение в столбце A пусто / "", строка i-1 неверна, и недостающие данные можно найти в текущей строке. Объедините данные в строке i с соответствующими столбцами в строке i-1 и отбросьте строку i (см.: строка 0 неполная, а строки 1 и 2 необходимо свернуть в строку 0).
Если вся строка пуста, удалите ее (см. строку 3).
Логика для определения этих двух случаев существует, но я, честно говоря, не могу найти способ объединить/объединить/объединить данные из двух строки друг над другом.
Если df2[A] пуст, соедините/объедините/объедините всю строку с соответствующей строкой в df1. Но у меня осталась та же проблема, что и в варианте 1, поскольку мне еще предстоит найти способ «наложить» две строки друг на друга.
Ближе всего к поиску отдаленно похожей проблемы я могу получить значение предыдущей строки и вычислить новый столбец pandas python. Он вычитает целые числа, но я пытаюсь объединить/добавить строки друг за другом.
Я пытаюсь исправить полученный мной CSV-файл, в который в данные были вставлены новые строки, эффективно разбивая одну строку данных на несколько с неполными столбцами. Разрывы строк размещаются вместо пробела после завершенного слова. В зависимости от языкового стандарта десятичные точки обозначаются запятыми (см. столбцы E и F). Даты в столбце A могут отображаться как дубликаты, но должны оставаться отдельными. [code]input.csv[/code], raw: [code]A date;B string;C string;D string;E integer;F integer 08.01.2026;a;b;c;3,7; ;d;;f;; ;e;;;; ;;;;; 08.01.2026;g;h;i;2,11; ;;;j;; ;;;k;; 31.01.2026;l;m;n;8,0; 03.02.2026;o;p;q;;4,9 ;;r;s;; [/code] [code]input.csv[/code]:
(index) Дата B строка C строка D строка E целое число F целое число
0 08.01.2026 a b c 3,7
1
d
f
2
e
3
4 08.01.2026 g h i 2,11
5
j
6
k
7 31.01.2026 l m n 8,0
8 03.02.2026 o p q
4,9
9
r s
Желаемый вывод (пробелы вместо удаленных новых строк):
(индекс) Дата B строка Строка C Строка D Целое число E Целое число F
0 08.01.2026 a d e b c f 3,7
4 08.01.2026 g h i j k 2,11
7 31.01.2026 l m n 8,0
8 03.02.2026 o p r q s
4,9
[code]import pandas as pd
df1 = pd.read_csv("input.csv", sep=";") [/code] Пока я не сортирую input.csv, все данные будут более или менее находиться в правильном положении. У меня есть две идеи, как решить эту проблему: [list] [*]Перебрать все строки. Если в первом столбце A есть какое-либо значение, перейдите к следующей строке. [list] Если в столбце A также есть значение, строка i-1 была правильной (см.: строка 7 правильная). [*]Если значение в столбце A пусто / "", строка i-1 неверна, и недостающие данные можно найти в текущей строке. Объедините данные в строке i с соответствующими столбцами в строке i-1 и отбросьте строку i (см.: строка 0 неполная, а строки 1 и 2 необходимо свернуть в строку 0). [*]Если вся строка пуста, удалите ее (см. строку 3). [/list] Логика для определения этих двух случаев существует, но я, честно говоря, не могу найти способ объединить/объединить/объединить данные из двух строки друг над другом.
[*]df2, содержащий исходные данные, но сдвинутый вверх на 1: [code]A date;B string;C string;D string;E integer;F integer ;d;;f;; ;e;;;; ;;;;; 08.01.2026;g;h;i;2,11; ;;;j;; ;;;k;; 31.01.2026;l;m;n;8,0; 03.02.2026;o;p;q;;4,9 ;;r;s;; [/code]
[/list] Если df2[A] пуст, соедините/объедините/объедините всю строку с соответствующей строкой в df1. Но у меня осталась та же проблема, что и в варианте 1, поскольку мне еще предстоит найти способ «наложить» две строки друг на друга.
[/list] Ближе всего к поиску отдаленно похожей проблемы я могу получить значение предыдущей строки и вычислить новый столбец pandas python. Он вычитает целые числа, но я пытаюсь объединить/добавить строки друг за другом.