gpt4 book ai didi

python - 字典为空时如何避免错误?

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:35 25 4
gpt4 key购买 nike

我有一个 df,如果我的 .apply() 中的“行”与我的字典中的项目匹配,我需要将列标记为“1”。但是,如果我的字典为空或不包含与我的 .apply() 在该实例中的行相同的“键”,脚本将失败。我怎样才能克服这个问题?

df =  pd.DataFrame({'Key': ['10003', '10003', '10003', '10003', '10003','10003','10034'], 
'Num1': [12,13,30,12,13,13,16],
'Num2': [121,122,122,124,125,126,127],
'admit': [2015019, 20150124, 20150206,20150211,20150220,20150407,20150211],
'discharge': [20150123, 20150202, 20150211,20150220,20150304,20150410,20150211]})
df['admit'] = pd.to_datetime(df['admit'], format='%Y%m%d')
df['discharge'] = pd.to_datetime(df['discharge'], format='%Y%m%d')
#df=df.head(5)

脚本:

d2 = df[df['discharge'].isin(range(30,40))].groupby('Key')['discharge'].apply(set).to_dict()

def find(x):
match2 = x['admit'] in d2[x['Key']]
return match2

df['flag'] = df.apply(find, axis=1).astype(int)

特别是,我需要标记一列,其中一行的入院日期等于另一行的出院日期,并且具有匹配出院日期的行在 Num1 中的值介于 30-40 之间。如果将 df 减少到仅 5 行 df=df.head(5),此脚本将按预期工作。但是当有些行的“键”不在字典中时,脚本会返回错误。我想知道是否为字典添加所有“关键”日期和空白日期会使这项工作成功?

KeyError: ('10034', 'occurred at index 6')

我想使用字典来执行上述任务,因为我的函数的其余部分具有与此类似的条件(那些更简单)。上面的代码在一个小样本上可以正常工作,但是我的字典经验很低,这让我很困惑。对不起,如果这是一个简单而愚蠢的问题。

最终目标:

    Key    Num1 Num2    admit   discharge   flag
0 10003 12 121 2015-01-09 2015-01-23 0
1 10003 13 122 2015-01-24 2015-02-02 0
2 10003 30 122 2015-02-06 2015-02-11 0
3 10003 12 124 2015-02-11 2015-02-20 1
4 10003 13 125 2015-02-20 2015-03-04 0
5 10003 13 126 2015-04-07 2015-04-10 0
6 10034 16 127 2015-02-11 2015-02-11 0

最佳答案

您可以使用 dict.get 并返回一个空列表。

例如:

def find(x):
match2 = x['admit'] in d2.get(x['Key'], [])
return match2

关于python - 字典为空时如何避免错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com