В зависимости от языкового стандарта десятичные точки обозначаются запятыми (см. столбцы E и F).
Даты в столбце A могут отображаться как дубликаты, но должны оставаться отдельными.
Код: Выделить всё
input.csvКод: Выделить всё
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;;
Код: Выделить всё
input.csv(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
Код: Выделить всё
import pandas as pd
df1 = pd.read_csv("input.csv", sep=";")
- Перебрать все строки. Если в первом столбце A есть какое-либо значение, перейдите к следующей строке.
- Если в столбце A также есть значение, строка i-1 была правильной (см.: строка 7 правильная).
- Если значение в столбце A пусто / "", строка i-1 неверна, и недостающие данные можно найти в текущей строке. Объедините данные в строке i с соответствующими столбцами в строке i-1 и отбросьте строку i (см.: строка 0 неполная, а строки 1 и 2 необходимо свернуть в строку 0).
- Если вся строка пуста, удалите ее (см. строку 3).
- Создайте два разных фрейма данных:
- df1, содержащий исходные данные:
Код: Выделить всё
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;; - df2, содержащий исходные данные, но сдвинутый вверх на 1:
Код: Выделить всё
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;;
- df1, содержащий исходные данные: