【发布时间】:2019-08-01 22:50:15
【问题描述】:
如果盒子的考试包含在Exams for this Site 中,我想创建一个列Valid Site。
由于某种原因,我目前对Valid Site 的方法给了我不准确的值:
>>> Materials_Tracking_df
+--------+--------------------+-----------------------+--------------+
| EXAM | Scoring Site DBN | Exams for this Site | Valid Site |
|--------+--------------------+-----------------------+--------------|
| MXRC | 04M435 | MXRC, MXRK, MXRN, | N |
| MXRC | 04M435 | MXRC, MXRK, MXRN, | N |
| SXRK | 03M076 | SXRK, SXRU, | N |
| MXRC | 04M435 | MXRC, MXRK, MXRN, | N |
+--------+--------------------+-----------------------+--------------+
看看第一行如何,它说 MXRC 是 N 对应于 Valid Site,尽管它显然在 Exams for this Site 之下。
这是我正在使用的代码:
MaterialsTracking_df['Valid Site'] = "Y" if MaterialsTracking_df['EXAM'].to_string() in MaterialsTracking_df['Exams for this Site'].to_string() else "N"
【问题讨论】:
-
您能否向我们展示您的数据结构是什么样的:
MaterialsTracking_df。否则我们无法回答这个问题。需要知道例如:Exams for this Site是元组还是字符串等。 -
当前返回值是多少?这些信息是从哪里来的?你如何获得信息?请发布更多代码,以便我们复制您的结果:)
-
你为什么使用
Series.to_string()?这不会像你认为的那样做。在 Python 控制台中试用MaterialsTracking_df['EXAM'].to_string()和MaterialsTracking_df['Exams for this Site'].to_string()。 -
MaterialsTracking_df['Valid Site'] = ["Y" if exam in exams else "N" for exam, exams in zip(MaterialsTracking_df['EXAM'], MaterialsTracking_df['Exams for this Site'])],前提是没有包含 N/A 值的行。