添加新标题和拆分列

2024-09-28 04:23:28 发布

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

我有一个很大的csv,里面有我用pandas导入python的数据。 csv的前3行如下所示。你知道吗

“PATIENT”,"MD",“REFMD”,“DIAGNOSIS_HISTORY”,“AVAILABLE_STUDIES”
“patient1\nPID1\npAge1”,“MDname1\nMDname3”,” RefDoctorName1”,“Prostate cancer”,”No Path\n CT ClinicName (CAP)  - 11/30/2015\n Nuclear: ClinicName (Bone Scan)  - 11/30/2015"
"patient2\nPID2\npAge2”,”MDname2\nSeen 10/12/2015”,“RefDoctorName2”,”Prostate cancer”,”Path: O/S - Prostate Bx 11/12/2014”

我想去

  • 将第一个column分成3部分,从“PATIENT”到“PATIENT\u Name”、“PID”、“pAGE”和
  • 在第二列中,删除第二个MD(如果有),并添加新的“MD2”列,以收集患者在同一诊所看到多个MD的次数。你知道吗
  • 另外,我想在MD列中拆分出Seen Date的发生率,并将其放在一个新的标题为“Date\u Seen”的列中。你知道吗

我把所有的专栏都分了出来,但下一步很难做。你知道吗

import pandas as pd
f = pd.read_csv("/path/file.csv")
pat = f.iloc[0:,:1]
refmd = f.iloc[0:,2:3]
diag = f.iloc[0:,3:4]

Tags: csv数据pathpandasdatemdpdseen
1条回答
网友
1楼 · 发布于 2024-09-28 04:23:28

您可以从以下内容开始:

df.columns = [re.sub(r'[^A-Za-z0-9\\]+', '', c).strip() for c in df.columns]
for i, col in df.items():
    df.loc[:, i] = col.str.replace(r'[^A-Za-z0-9\\ ]+', '').str.strip()

要获得:

                 PATIENT                      MD           REFMD  \
0  patient1\nPID1\npAge1        MDname1\nMDname3  RefDoctorName1   
1  patient2\nPID2\npAge2  MDname2\nSeen 10122015  RefDoctorName2   

  DIAGNOSISHISTORY                                   AVAILABLESTUDIES  
0  Prostate cancer  No Path\n CT ClinicName CAP   11302015\n Nucle...  
1  Prostate cancer                      Path OS  Prostate Bx 11122014 

newline字符上splitexpand转换成新的columns

pat = df.iloc[:, 0].str.split(r'\\n', expand=True)
pat.columns = ['PATIENT_name', 'PID', 'pAGE']

  PATIENT_name   PID   pAGE
0     patient1  PID1  pAge1
1     patient2  PID2  pAge2

以及:

md = df.iloc[:, 1].str.split(r'\\n', expand=True)
md.columns = ['MD', 'MD2']

        MD            MD2
0  MDname1        MDname3
1  MDname2  Seen 10122015

相关问题 更多 >

    热门问题