用二进制值替换CSV文件中的分类值

2024-04-25 18:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个临床数据集,我必须更换

  • 第一列的值“deased”为1,如果值“Date”大于365,则替换为0(零)
  • 如果“一天到一天的跟进”大于365,那么“与一个一起生活”的价值

此外,我需要指定年龄

  • 0-25至箱0
  • 25-50至1号料仓
  • 50-75至2号料仓
  • 75以上到4号垃圾箱。你知道吗

这是我的密码。你知道吗

import csv
import pandas as pd
with open('combined_file', 'rb') as f,open('newFile', 'wb') as out:
    reader = csv.reader(f)


    writer = csv.writer(out)
    for row in reader:
        #print "AABB"
        if 'DECEASED' in row[1]:
            if row[10]>365:
                row[1]=1
                writer.writerow(row)
            elif row[10]<365:
                row[1]=0
                writer.writerow(row)
        if 'LIVING' in row[1]:
            if row[11]>365:
                row[1]=1
                writer.writerow(row)

样本输入

sample id , status , age ,gender ,date ,days_to_last_followup
0     ,    Deceased , 42 , M  ,   326 ,    149
1     ,    Deceased , 56 , F  ,   500 ,    30
2     ,    living   , 43 ,M   ,   25  ,    150

样本输出

sample id , status , age ,gender,date ,days_to_last_followup
0     ,       0    , 1 ,  M    ,326 ,    149
1     ,       1    , 2 , F     ,500 ,    30
2     ,       0    , 1 ,M   ,   25  ,    150

Tags: csvsampleinimportidifasstatus
2条回答

您的代码是一个很好的起点—代码没有涵盖的一些内容:

  • 当“已故的”和“活着的”都在row[1]时会发生什么?您的代码将写两行。要解决此问题,请将if 'LIVING'设置为elif 'LIVING'。你知道吗
  • 您需要一个else案例来捕捉当DECEASEDLIVING都不在row[1]时发生的情况。你知道吗

基于这篇文章,我不确定你的问题是什么。无论哪种方式,如果“已故”和“活着”都在同一行中,逻辑结构都会有问题[1]。我建议您创建一些测试用例来查找坏数据,因为ETL过程通常必须处理意外的数据格式/字段。你知道吗

我也不知道你为什么要导入熊猫图书馆。在你发布的代码里,你好像没有把它叫做什么。你知道吗

相关问题 更多 >