如何在DataFrame单元格中显示具有自定义名称的Python namedtuple

2024-09-27 00:16:09 发布

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

我有用于ICD代码的Python命名耦合。例如:

g40 = ICD(child=['G40.0', 'G40.1'], parent='G40-G47',
          code='G40', exclusion=['seizure (convulsive) NOS'],
          title='Epilepsy')

我希望在一个数据帧列中存储大量这样的命名元组。namedtuple的每个实例都有自己的名称

我只希望在Pandas数据框单元格中显示namedtuple的实例名称或其他自定义名称,如下所示:

   | icd         |  another_column
 ------------------------------------
 0 | g40         |  some other data
 1 | g41         |  more data

然后,要访问基础namedtuple数据,请执行以下操作:

>>>df.icd[0].title

'Epilepsy'

实现这一目标的最佳方式是什么

附录:示例代码实例化了一些namedtuple

# Example code

from collections import namedtuple
import pandas as pd

ICD = namedtuple('ICD', ['inclusion', 'code', 'classKind', 'parent', 'title'])

g400 = ICD(inclusion=['Benign childhood epilepsy with centrotemporal EEG spikes', 'Childhood epilepsy with occipital EEG paroxysms'],
    code='G40.0',
    classKind='category',
    parent='G40',
    title='Localization-related (focal)(partial) idiopathic epilepsy and epileptic syndromes with seizures of localized onset')

g401 = ICD(inclusion=['Attacks without alteration of consciousness', 'Simple partial seizures developing into secondarily generalized seizures'],
    code='G40.1',
    classKind='category',
    parent='G40',
    title='Localization-related (focal)(partial) symptomatic epilepsy and epileptic syndromes with simple partial seizures')

g402 = ICD(inclusion=['Attacks with alteration of consciousness, often with automatisms', 'Complex partial seizures developing into secondarily generalized seizures'],
    code='G40.2',
    classKind='category',
    parent='G40',
    title='Localization-related (focal)(partial) symptomatic epilepsy and epileptic syndromes with complex partial seizures')

g403 = ICD(inclusion=['Benign: myoclonic epilepsy in infancy', 'Benign: neonatal convulsions (familial)',
               'Childhood absence epilepsy [pyknolepsy]', 'Epilepsy with grand mal seizures on awakening',
               'Juvenile: absence epilepsy', 'Juvenile: myoclonic epilepsy [impulsive petit mal]',
               'Nonspecific epileptic seizures: atonic', 'Nonspecific epileptic seizures: clonic',
               'Nonspecific epileptic seizures: myoclonic', 'Nonspecific epileptic seizures: tonic',
               'Nonspecific epileptic seizures: tonic-clonic'],
    code='G40.3',
    classKind='category',
    parent='G40',
    title='Generalized idiopathic epilepsy and epileptic syndromes')


df = pd.DataFrame(data = {'icd':[g400, g401, g402, g403], 'another_column':['A', 'B', 'C', 'D']})

Tags: titlewithcodenamedtuplepartialparentcategoryinclusion
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:09

我注意到的第一个问题是实例之间的逗号。它们在那里没有位置,所以我把它们移走了
我对命名元组使用了._asdict()方法来获取字典格式,并将结果传递到数据帧中

colln = [i._asdict() for i in (g400,g401,g402,g403)]

pd.DataFrame(colln).assign(another_column=['A','B','C','D'])

inclusion   code    classKind   parent  title   another_column
0   [Benign childhood epilepsy with centrotemporal...   G40.0   category     
    G40 Localization-related (focal)(partial) idiopath...   A
1   [Attacks without alteration of consciousness, ...   G40.1   category     
    G40 Localization-related (focal)(partial) symptoma...   B
2   [Attacks with alteration of consciousness, oft...   G40.2   category     
    G40 Localization-related (focal)(partial) symptoma...   C
3   [Benign: myoclonic epilepsy in infancy, Benign...   G40.3   category     
    G40 Generalized idiopathic epilepsy and epileptic ...   D

请注意,在数据帧中不能使用元组方法进行索引;您最好的选择是在数据框架之外做任何您想做的事情
如果不符合您的要求,请告诉我,并提供更多解释

相关问题 更多 >

    热门问题