Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查python数据帧特定列中缺少的值?_Python_Python 2.7_Pandas_Csv_Missing Data - Fatal编程技术网

如何检查python数据帧特定列中缺少的值?

如何检查python数据帧特定列中缺少的值?,python,python-2.7,pandas,csv,missing-data,Python,Python 2.7,Pandas,Csv,Missing Data,我有一个数据帧,如下所示- time machine message 6 2017-08-07 05:24:31,955 solid qa : 6502444 20 2017-08-07 05:24:32,024 solid prod : 6502445 32 2017-08-07 05:24:32,033 solid qa : 6502445 44 20

我有一个数据帧,如下所示-

               time              machine        message
6      2017-08-07 05:24:31,955    solid    qa  : 6502444
20     2017-08-07 05:24:32,024    solid    prod : 6502445
32     2017-08-07 05:24:32,033    solid    qa : 6502445
44     2017-08-07 05:24:32,041    solid    prod : 6502446
56     2017-08-07 05:24:32,055    solid    qa : 6502446
68     2017-08-07 05:24:32,063    solid    prod : 6502447
80     2017-08-07 05:24:32,071    solid    qa : 6502450
92     2017-08-07 05:24:32,079    solid    prod : 6502451
92     2017-08-07 05:24:32,079    solid    qa : 6502452
104    2017-08-07 05:24:32,086    solid    prod : 6502453
116    2017-08-07 05:24:32,094    liquid    qa : 700001
128    2017-08-07 05:24:32,101    liquid    prod : 700004
140    2017-08-07 05:24:32,108    liquid    qa : 700002
152    2017-08-07 05:24:32,115    liquid    prod : 700005
164    2017-08-07 05:24:32,126    liquid    qa : 700007
176    2017-08-07 05:24:32,133    liquid    prod : 700010
188    2017-08-07 05:24:32,140    liquid    qa : 700008
200    2017-08-07 05:24:32,147    liquid    prod : 700011
machine,message_header,missing_number_size,start,end,start_time,end_time
我想知道消息栏中缺少哪些关于qa和prod的数字

示例-

机器列-实心,在消息列中qa:6502446。在这一行之后,我期待消息列中的machine列-solidqa:6502447但是它不可用意味着丢失了6502448。产品也一样

我想生成一个csv格式的输出文件,其标题如下-

               time              machine        message
6      2017-08-07 05:24:31,955    solid    qa  : 6502444
20     2017-08-07 05:24:32,024    solid    prod : 6502445
32     2017-08-07 05:24:32,033    solid    qa : 6502445
44     2017-08-07 05:24:32,041    solid    prod : 6502446
56     2017-08-07 05:24:32,055    solid    qa : 6502446
68     2017-08-07 05:24:32,063    solid    prod : 6502447
80     2017-08-07 05:24:32,071    solid    qa : 6502450
92     2017-08-07 05:24:32,079    solid    prod : 6502451
92     2017-08-07 05:24:32,079    solid    qa : 6502452
104    2017-08-07 05:24:32,086    solid    prod : 6502453
116    2017-08-07 05:24:32,094    liquid    qa : 700001
128    2017-08-07 05:24:32,101    liquid    prod : 700004
140    2017-08-07 05:24:32,108    liquid    qa : 700002
152    2017-08-07 05:24:32,115    liquid    prod : 700005
164    2017-08-07 05:24:32,126    liquid    qa : 700007
176    2017-08-07 05:24:32,133    liquid    prod : 700010
188    2017-08-07 05:24:32,140    liquid    qa : 700008
200    2017-08-07 05:24:32,147    liquid    prod : 700011
machine,message_header,missing_number_size,start,end,start_time,end_time
详细信息-

  • 机器为固体或液体(在这种情况下,如果第三台可用,则需要考虑)
  • 消息标题在消息列值中可用。它是固定的质量保证或生产
  • 缺失的数量\u大小是qa和prod之间缺失的数字
  • 开始是消息列中未找到的前一个可用号码+1
  • endis(第一个可用数字-1)位于消息列的missed之后
  • 开始时间是从时间列中错过之前的最后可用时间
  • 结束时间是missed from time列之后的第一个可用时间
Output.csv将如下所示-

machine,message_info,missin_number_size,start,end,start_time,end_time
solid,qa,3,6502447,6502449,2017-08-07 05:24:32,055,2017-08-07 05:24:32,071
solid,qa,1,6502451,6502451,2017-08-07 05:24:32,071,2017-08-07 05:24:32,079
solid,prod,3,6502448,6502450,2017-08-07 05:24:32,063,2017-08-07 05:24:32,079
solid,prod,1,6502452,6502452,2017-08-07 05:24:32,079,2017-08-07 05:24:32,086
liquid,qa,4,700003,700006,2017-08-07 05:24:32,108,2017-08-07 05:24:32,126
liquid,prod,4,700006,700009,2017-08-07 05:24:32,115,2017-08-07 05:24:32,133
编辑1-根据评论回答我做了什么

我做了下面的实验,但不是这样。在控制台上打印输出结果需要时间。我想要熊猫的方式(快)-

代码中的假设-数据是一个字典,它将值作为一个整体包含在上面的数据帧中

for key, value in data.iteritems():
    prev_qa_no = 0
    prev_prod_no = 0
    prev_time = ""
    total_count = 0
    flag = False
    qa = value[value['message'].str.contains("qa")]
    prod = value[value['message'].str.contains("prod")]
    qa['qa'] = qa['message'].apply(remove_name)
    del qa['message']
    qa.sort_values('qa',inplace=True)
    for index, row in qa.iterrows():
        time = row['time']
        feed = row['feed']
        qa_no = int(row['qa'])
        if flag:
            if (qa_no - prev_qa_no) > 1:
                diff=qa_no-prev_qa_no+1
                print str(feed.strip())+",qa,"+str(diff)+","+str(prev_qa_no+1)+","+str(qa_no-1)+","+str(prev_time.strip())+","+str(time)

        flag = True
        prev_time = time
        prev_qa_no = qa_no

    prev_time = ""
    total_count = 0
    prod['prod'] = prod['message'].apply(remove_name)
    del prod['message']
    prod.sort_values('prod',inplace=True)
    flag = False
    for index, row in prod.iterrows():
        time = row['time']
        feed = row['feed']
        prod_no = int(row['prod'])
        if flag:
            if (prod_no - prev_prod_no) > 1:
                diff=prod_no-prev_prod_no+1
                print str(feed.strip())+",prod,"+str(diff)+","+str(prev_prod_no+1)+","+str(prod_no-1)+","+str(prev_time.strip())+","+str(time)

        flag = True
        prev_time = time
        prev_prod_no = prod_no

如果您在理解此问题时有任何疑问,请随时询问我。

让我们调用您的数据帧
df
(因为我很懒,所以我只使用消息列):

您可以检查qa和prod中缺少的内容

我还不完全理解您希望如何做到这一点,但如果要查看每个“qa”是否与“prod”匹配,您可以应用设置功能,例如,如果您希望查看prod中的内容而不是qa中的内容:

missing_in_qa=prod['message'][~prod['message'].isin(qa['message'])]

让我们调用您的数据帧
df
(因为我很懒,所以我只减少到消息列):

您可以检查qa和prod中缺少的内容

我还不完全理解您希望如何做到这一点,但如果要查看每个“qa”是否与“prod”匹配,您可以应用设置功能,例如,如果您希望查看prod中的内容而不是qa中的内容:

missing_in_qa=prod['message'][~prod['message'].isin(qa['message'])]

@Wli-你还没有回答这个问题。我不想找到缺失的数据,这些数据在prod中可用,在qa中不可用,反之亦然。我想找到个人(qa和prod)缺失的数据。请参阅Output.csv以更好地理解它。我相信我的答案的第一部分仍然有帮助。您需要处理我称为qa和prod的数据帧。您可能还需要按机器分组(df.groupby('machine'))@Wli-您还没有得到问题。我不想找到缺失的数据,这些数据在prod中可用,在qa中不可用,反之亦然。我想找到个人(qa和prod)缺失的数据。请参阅Output.csv以更好地理解它。我相信我的答案的第一部分仍然有帮助。您需要处理我称为qa和prod的数据帧。您可能还需要按机器分组(df.groupby('machine'))