инкрементная нумерация в середине столбца

#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' должен ли я преобразовать этот столбец в int

2. Если тип столбца — string, вы можете сравнить его с «» и проверить, равно ли значение null или нет. Преобразование в int должно работать в случае числовых столбцов