У меня странно выглядящий фрейм данных, который мне нужно спорить.Это выглядит примерно так:
Unnamed: 0 REFERENCE_CODE ... Unnamed: 12 Unnamed: 13
0 Q2 country_satis ... NaN NaN
1 NaN 1 ... NaN NaN
2 NaN 2 ... NaN NaN
3 NaN 8 ... NaN NaN
4 NaN 9 ... NaN NaN
5 NaN NaN ... NaN NaN
6 Q3 econ_sit ... NaN NaN
5 NaN NaN ... NaN NaN
7 NaN 1 ... NaN NaN
8 NaN 2 ... NaN NaN
9 NaN 3 ... NaN
10 NaN 4 ... NaN NaN
11 NaN 8 ... NaN NaN
12 NaN 9 ... NaN NaN
13 NaN NaN ... NaN NaN
14 Q4 children_betteroff2 ... NaN Не четете!
15 NaN 1 ... NaN NaN
16 NaN 2 ... NaN NaN
15 NaN NaN ... NaN NaN
18 NaN 8 ... NaN NaN
19 NaN 9 ... NaN NaN
20 NaN NaN ... NaN NaN
21 Q5 satisfied_democracy ... NaN NaN
22 NaN 1 ... NaN NaN
23 NaN 2 ... NaN NaN
24 NaN 3 ... NaN NaN
(я внес некоторые правки в оригинал, чтобы отразить то, что может появиться в этом очень длинном кадре данных).Моя цель здесь - создать уникальный идентификатор для каждого из значений (например, 1,2,8,9), связанных с вопросом (например, country_statis).Я пытаюсь объединить country_satis в 1, чтобы у всех моих «блоков» было
0 Q2 country_satis ... NaN NaN
1 NaN country_statis_1 ... NaN NaN
2 NaN country_statis_2 ... NaN NaN
3 NaN country_statis_8 ... NaN NaN
4 NaN country_statis_9 ... NaN NaN
5 NaN NaN ... NaN NaN
Вот моя попытка:
df.REFERENCE_CODE = df.REFERENCE_CODE.fillna('')
df.REFERENCE_CODE.str.isnumeric().dtype # returns object
headers = (df.REFERENCE_CODE != '') & ~df.REFERENCE_CODE.str.isnumeric()
res = df.groupby(headers.cumsum())['REFERENCE_CODE'].apply(lambda x: x.iloc[0] + '_' + x)
df.REFERENCE_CODE.update(res[df.REFERENCE_CODE.str.isnumeric()])
Моя цель также состоит в том, чтобы сохранить целостностьи структура данных, потому что в конечном итоге, в идеале, я хотел бы выполнить чистое объединение двух источников данных.Я, вероятно, должен сделать это в SQL lol.
Ошибка здесь:
Traceback (most recent call last):
File "/Users/xx/Projects/trend_env/src/script4.py", line 10, in <module>
df.REFERENCE_CODE = df.REFERENCE_CODE.fillna('')
File "/Users/xx/Projects/trend_env/lib/python3.7/site-packages/pandas/core/generic.py", line 5067, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'REFERENCE_CODE'
РЕДАКТИРОВАТЬ:
Извините, я отправил неверный скрипт ошибка .. здесьэто сообщение об ошибке:
Traceback (most recent call last):
File "/Users/xxx/Projects/trend_env/src/script4.py", line 16, in <module>
headers = (df.REFERENCE_CODE != '') & ~df.REFERENCE_CODE.str.isnumeric()
File "/Users/xxx/Projects/trend_env/lib/python3.7/site-packages/pandas/core/generic.py", line 1466, in __invert__
Index(['Question number', 'REFERENCE_CODE', 'Filter', 'English stem',
'Translator note', 'Philippines - Bicolano', 'Philippines - Cebuano',
'Philippines - Ilonggo', 'Philippines Ilokano', 'Philippines - Tagalog',
'Unnamed: 10', 'Unnamed: 11', 'Unnamed: 12', 'Unnamed: 13'],
dtype='object')
arr = operator.inv(com.values_from_object(self))
TypeError: bad operand type for unary ~: 'float'
EDIT2:
Согласно Энди Хейдену, вы не могли бы помочь мне решить эту логику? Код работает нормально.У меня есть случай, когда df выглядит так:
25 partyfav_batt NaN
26 partyfav_bulgaria_GERB NaN
27 partyfav_bulgaria_BSP NaN
28 partyfav_bulgaria_DPS NaN
29 NaN
30 partyfav_bulgaria_DPS_1 NaN
31 partyfav_bulgaria_DPS_2 NaN
32 partyfav_bulgaria_DPS_3 NaN
33 partyfav_bulgaria_DPS_4 NaN
34 partyfav_bulgaria_DPS_8 NaN
35 partyfav_bulgaria_DPS_9 NaN
36 NaN
37 partyfav_batt NaN
38 partyfav_canada_Lib NaN
39 partyfav_canada_Cons NaN
40 partyfav_canada_NDP NaN
41 NaN
42 partyfav_canada_NDP_1 NaN
43 partyfav_canada_NDP_2 NaN
44 partyfav_canada_NDP_3 NaN
45 partyfav_canada_NDP_4 NaN
46 partyfav_canada_NDP_8 NaN
47 partyfav_canada_NDP_9 NaN
Как я могу получить его, чтобы, если он видит кусок ...
37 partyfav_batt NaN
38 partyfav_canada_Lib NaN
39 partyfav_canada_Cons NaN
40 partyfav_canada_NDP NaN
Он превращается в нечто вродеэто (я сжал):
39 partyfav_canada_Cons NaN
40 partyfav_canada_NDP NaN
41 NaN
42 partyfav_canada_Cons_1 NaN
43 partyfav_canada_Cons_2 NaN
44 partyfav_canada_Cons_3 NaN
45 partyfav_canada_Cons_4 NaN
42 partyfav_canada_NDP_1 NaN
43 partyfav_canada_NDP_2 NaN
44 partyfav_canada_NDP_3 NaN
45 partyfav_canada_NDP_4 NaN