我有一个奇怪的数据帧,我需要争论。看起来像这样:
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)生成一个唯一的ID(例如country_statis)。我正在尝试将country_satis连接到1,以便我的所有“块”都
^{pr2}$以下是我的尝试:
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'
编辑2:
按照安迪·海登的说法——你介意帮我解决这个逻辑。。我的代码运行得很好。我有一个案例,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
您可以先
fillna
:示例:
^{pr2}$相关问题 更多 >
编程相关推荐