Python 3.x 如何生成两个数字之间缺少的数字(在单个单元格中有),并将生成的值作为新行附加到DataFrame

Python 3.x 如何生成两个数字之间缺少的数字(在单个单元格中有),并将生成的值作为新行附加到DataFrame,python-3.x,pandas,append,rows,between,Python 3.x,Pandas,Append,Rows,Between,我认为: code_range CCS CCS_Label icode '0112-0115' 232 Anesthesia 0112, 0115 '0118-0120' 232 Anesthesia 0118, 0120 我需要在icode(column)的两个值之间生成数字,并将这些值附加到df中,以保持其他列值相同。并删除旧的行。有点像扩展行。 我的例外解决方案: code_range CCS CCS_Label icode '0112-

我认为:

code_range   CCS    CCS_Label   icode
'0112-0115'  232    Anesthesia  0112, 0115
'0118-0120'  232    Anesthesia  0118, 0120 
我需要在icode(column)的两个值之间生成数字,并将这些值附加到df中,以保持其他列值相同。并删除旧的行。有点像扩展行。 我的例外解决方案:

code_range   CCS    CCS_Label   icode
'0112-0115'  232    Anesthesia  0112
'0112-0115'  232    Anesthesia  0113
'0112-0115'  232    Anesthesia  0114
'0112-0115'  232    Anesthesia  0115
'0118-0120'  232    Anesthesia  0118
'0118-0120'  232    Anesthesia  0119
'0118-0120'  232    Anesthesia  0120 
花了大量的时间,我也无法找到解决问题的正确方法。请帮助解决这个问题


提前感谢..

性能不是特别好,但是
拆分
,创建列表,然后
分解
。假设您的所有代码都是整数,并且您不希望前导0,如在输出中:

(df.set_index(['CCS', 'CCS_Label'])
   .icode.str.split(', ')
   .apply(lambda x: range(int(x[0]), int(x[1])+1))
   .explode()
   .reset_index())


起始数据

import pandas as pd
df = pd.DataFrame({'CCS': [232, 232], 'CCS_Label': ['Anesthesia']*2,
                   'icode': ['0112, 0115', '0118, 0120']})

你有试过吗?此外,如果这是某种医疗保健数据,请确保您的代码在中的含义与您认为的相同。范围(值,值)。没有人给出正确的方法来生成值,甚至在生成值之后如何追加。是的,你是对的,它的医疗数据。关于获得解决方案,我还有更多的步骤……谢谢:)你能把
df.head()打印到_dict()
那列就是字符串
'011215'
?是的,正如你所说的是字符串。实际上,我的.csv文件中的icode(列)有字符串值('0112-0115'和'0118-0120'…以此类推)。我将字符串值提取为(0112015和01180120..,依此类推)。我正在更新同样的帖子。很抱歉,我错过了值前面的“0”,我正在更新相同的值…..谢谢。它就快到了。但它抛出的错误消息如下:
'Series'对象没有属性“explode”
@RaghavendraS您有什么版本的
pandas
?这是从
0.25开始的新功能
如果可以,请升级,否则请查看手动执行的方法我使用的是0.23.4。我得到了我的结果。我使用的代码是:
df1=df.icode.str.split(',').apply(pd.Series.stack().rename('expanded').to_frame().reset_index(1,drop=True)df=pd.merge(df,df1,how='left',left_index=True,right_index=True)df['expanded']=df.expanded.astype('str').zfill(5)
。非常感谢您提出的在单元格值中拆分列表的想法得到了我的答案。再次感谢你
import pandas as pd
df = pd.DataFrame({'CCS': [232, 232], 'CCS_Label': ['Anesthesia']*2,
                   'icode': ['0112, 0115', '0118, 0120']})