首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中优化编码标注的时间迭代

在python中优化编码标注的时间迭代
EN

Stack Overflow用户
提问于 2020-04-01 09:47:54
回答 4查看 54关注 0票数 0

我在python的数据帧中有以下列,名为admission:

代码语言:javascript
运行
复制
Patient ID, Regular ward, Semi-intensive, Intensive
1                0               0            0
2                1               0            0
3                0               1            0
4                0               1            0
5                0               0            1

我已经完成了以下转换:

代码语言:javascript
运行
复制
 Patient ID, Admission type
 1                 0
 2                 1
 3                 2
 4                 2
 5                 3

基本上,为了实现这个转换,我创建了一个名为'No admission‘的新列,如果三个列(常规病房、半集中、集中)为0,则包含1,否则返回0。

之后,我将每列中的值映射到一列中,以返回列的名称,而不是0或1。

代码语言:javascript
运行
复制
Patient ID, Admission type
 1          No admission
 2          Regular ward
 3          Semi-intensive
 4          Semi-intensive
 5          Intensive

并为No admission=0,Regular ward=1,Semi-intensive=2,Intensive=3再次进行映射

这是我的完整代码转换。

代码语言:javascript
运行
复制
df['No admission'] = None
admission= df.iloc[:,3:6] # Selecting only the three columns mentioned above.

for row in df.index:
    if admission.apply(any,axis=1).values[row]:
        df.loc[row,'No admission'] = 0
    else:
        df.loc[row,'No admission'] = 1

cols = [4,5,6,106]
df.insert(loc = 1,
          column = 'Admission type',
          value = df.iloc[:,cols].apply(np.argmax, axis=1))

df.drop(df.columns[cols],axis=1,inplace=True)

le = LabelEncoder()
le.fit(df['Admission type'])
df['Admission type'] = le.transform(df['Admission type'])

重点是:我的原始数据集有5644行和111列。解释我上面提到的内容的执行时间大约是10分钟!

我知道这是一个改善它的更好的方法,我很感谢任何人的帮助。

EN

Stack Overflow用户

发布于 2020-04-01 10:10:38

您可以使用dot将列名合并到每个1中,并从它创建一个新的数据框架。

代码语言:javascript
运行
复制
df1 = df[['Regular-ward', 'Semi-intensive', 'Intensive']]
df_final = df[['Patient_ID']].assign(**{'Admission Type': df1.dot(df1.columns).replace('', 'No admission')})

Out[16]:
   Patient_ID  Admission Type
0           1   No admission
1           2    Regular-ward
2           3  Semi-intensive
3           4  Semi-intensive
4           5       Intensive
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60962461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档