#python-3.x #pandas
#python-3.x #панды
Вопрос:
у меня есть такой фрейм данных
0
1
2 Q1 A 1
3 Q1 A 2
4 Q1 A 3
5 Q1 A 4
6 Q1 A 5
7
8 Q2 A 1
9 Q2 A 2
10 Q2 A 3
11 Q2 A 4
12 Q2 A 5
13 Q2 A 6
14 Q2 A 7
15 Q2 A 9
16
17 Q3 V
18 Q3 V
19 Q3 V
20 Q3 V
21 Q3 V
22
23 Q4 A 1
24 Q4 A 2
25 Q4 A 3
26 Q4 A 4
27 Q4 A 5
28 Q4 A 6
29 Q4 A 7
30
31 Q5 A 1
32 Q5 A 2
33 Q5 A 3
34 Q5 A 4
35 Q5 A 5
36 Q5 A 6
37
38 Q6
39
40
41
42 Q7
43
44
45
46 Q8
47
48 Q9 V
49 Q9 V
50 Q9 V
51 Q9 V
52
53 Q10 A 1
54 Q10 A 2
55 Q10 A 3
56 Q10 A 4
57 Q10 A 5
58 Q10 A 6
59 Q10 A 7
60 Q10 A 8
61 Q10 A 9
62 Q10 A 10
63
64 Q11 V
65 Q11 V
66 Q11 V
67 Q11 V
68 Q11 V
69 Q11 V
70
71 Q12 A 1
72 Q12 A 2
73 Q12 A 3
74 Q12 A 4
75 Q12 A 5
76 Q12 A 6
77 Q12 A 7
что я хочу, так это добавить нумерацию типа Q1 A1
, Q1 A 2
к Q3 V 1
и Q3 V 2
поэтому я хочу добавить числовое значение в порядке возрастания, если значение строки или ячейки содержит V
Я изо всех сил пытаюсь найти логику, чтобы остановить нумерацию, если вопрос изменится, и запустить его снова в зависимости от условия
мой ожидаемый результат выглядит следующим образом
0
1
2 Q1 A 1
3 Q1 A 2
4 Q1 A 3
5 Q1 A 4
6 Q1 A 5
7
8 Q2 A 1
9 Q2 A 2
10 Q2 A 3
11 Q2 A 4
12 Q2 A 5
13 Q2 A 6
14 Q2 A 7
15 Q2 A 9
16
17 Q3 V 1
18 Q3 V 2
19 Q3 V 3
20 Q3 V 4
21 Q3 V 5
22
23 Q4 A 1
24 Q4 A 2
25 Q4 A 3
26 Q4 A 4
27 Q4 A 5
28 Q4 A 6
29 Q4 A 7
30
31 Q5 A 1
32 Q5 A 2
33 Q5 A 3
34 Q5 A 4
35 Q5 A 5
36 Q5 A 6
37
38 Q6
39
40
41
42 Q7
43
44
45
46 Q8
47
48 Q9 V 1
49 Q9 V 2
50 Q9 V 3
51 Q9 V 4
52
53 Q10 A 1
54 Q10 A 2
55 Q10 A 3
56 Q10 A 4
57 Q10 A 5
58 Q10 A 6
59 Q10 A 7
60 Q10 A 8
61 Q10 A 9
62 Q10 A 10
63
64 Q11 V 1
65 Q11 V 2
66 Q11 V 3
67 Q11 V 4
68 Q11 V 5
69 Q11 V 6
70
71 Q12 A 1
72 Q12 A 2
73 Q12 A 3
74 Q12 A 4
75 Q12 A 5
76 Q12 A 6
77 Q12 A 7
как я могу это сделать в pandas
Комментарии:
1. Почему ваш пример такой маленький?
2. Я не могу добавить другой столбец для отображения данных, и это единственный столбец в dataframe для работы в настоящее время, пожалуйста, укажите, какие детали вы хотите, чтобы я мог обновить свой вопрос
Ответ №1:
Сначала преобразуйте один столбец в три столбца, используя
df.dropna(inplace=True)
df = df.column.str.split(expand=True)
Теперь ваш фрейм данных будет иметь 3 столбца — скажем, Col_A, Col_B и Col_C, а значения будут Q #, X, # соответственно. Возможно, вам потребуется изменить имя / индекс столбцов в приведенном ниже коде.
df[2][0] = 1
for i in range(1,len(Col_A) 1):
if df[2][i].null():
if df[0][i].notnull() amp; df[1][i].notnull():
if (df[0][i] == df[0][i-1]) amp; (df[1][i] == df[1][i-1]):
df[2][i]= df[2][i-1] 1
else:
df[2][i]=1
Комментарии:
1.
AttributeError: 'str' object has no attribute 'null'
должен ли я преобразовать этот столбец в int2. Если тип столбца — string, вы можете сравнить его с «» и проверить, равно ли значение null или нет. Преобразование в int должно работать в случае числовых столбцов