【发布时间】:2022-10-04 21:07:01
【问题描述】:
我有一个这样的数据框 -Please refer the dataframe as in the image shown
有四列('status','preferred_time','history','id'),需要检查所有列是否都有一些值,在历史列中,在某些情况下它是一个嵌套列表,所以需要特别检查嵌套列表是否有所有强制键 'branch','rank','discharge_status','service_start',job_code','post_intention' 有值,如果在数据框中添加一个名为“输出”的列所有列都有值,然后将其命名为“已完成”,如果任何列或历史列中的空白或 NaN 或 [{}] 缺少任何键值对,则将其命名为“待定”。
从图像中,只有第一行应该处于完成状态,其余的应该处于挂起状态。
如果在这种情况下出现其他情况,请帮助我更好地构建。 提前致谢。
上述df图像的字典 -
{'status': {0: 'No', 1: 'No', 2: nan, 3: 'No', 4: 'No'},
'preferred_time': {0: "['Morning', 'Midday', 'Afternoon']",
1: [],
2: "['Morning'] ",
3: nan,
4: "['Morning', 'Midday'] "},
'history': {0: "[{'branch': 'A', 'rank': 'E7', 'discharge_status': 'Honorable Discharge', 'service_start': '1999-02-13', 'job_code': '09', 'post_intention': ['No']}]",
1: "[{'branch': 'A', 'rank': 'E7', 'discharge_status': 'Honorable Discharge', 'service_start': '1999-02-13', 'job_code': '09', 'post_intention': ['No']}]",
2: "[{'branch': 'A', 'rank': 'E7', 'discharge_status': 'Honorable Discharge', 'service_start': '1995-02-13', 'job_code': '09', 'post_intention': ['No']},{'branch': 'A', 'rank: 'E6', 'discharge_status': 'Honorable Discharge', 'service_start': '2015-02-13', 'job_code': '09'}]",
3: nan,
4: '[{}]'},
'id': {0: 1, 1: 5, 2: 2, 3: 3, 4: 4}}
我尝试了下面的代码行 - 但我不知道如何在一个 if 语句中检查所有四列 -
for i in df.index:
status = df['status'][i]
preferred_time = df['preferred_time'][i]
id = df['id'][i]
history = df['history'][i]
if status and preferred_time and id and status!='' and preferred_time!= '' and id!='':
enroll_status = "completed"
else:
enroll_status = "pending"
if history!= '' or str(history)!= '[{}]':
for item in history:
if 'branch' in item.keys() and'rank' in item.keys() and'discharge_status' in item.keys() and'service_start' in item.keys() and 'job_code' in item.keys() and 'post_intention' in item.keys():
enroll_status = "completed"
else:
enroll_status = "pending"
【问题讨论】:
-
如果您可以粘贴
df.head().to_dict()的结果(其中df是您的数据框),而不是提供图像,这将很有帮助。 -
@BenGrossmann stackoverflow.com/users/2476977/ben-grossmann,为数据框创建了一个字典。
-
你试图解决这个问题是什么,你在哪里卡住了? @deepu2711
-
@Vishnudev stackoverflow.com/users/5120049/vishnudev ,添加了我尝试过的代码行。
-
@deepu 您的数据框的条目是字符串而不是实际列表是否有原因?此外,您无需在回复中包含指向用户个人资料的链接。
标签: python pandas dataframe dictionary if-statement