列包含列4

时间:2019-05-23 13:40:38

标签: pandas

我有一个数据框。我想测试(C)在每一行中(B)列中的数字是否在字符串(A)列中。

df = pd.DataFrame({'A': ["me 123", "me-123", "1234", "me 12", "123 me", "6 you 123-me"],
                   'B': [123,       123,      123,    123,     6,        123]})

我几乎可以使用提取功能做到这一点

df['C'] = df.A.str.extract('(\d+)', expand=False).astype(float).eq(df.B,0).astype(int)

              A    B  C
0        me 123  123  1
1        me-123  123  1
2          1234  123  0
3         me 12  123  0
4        123 me    6  0
5  6 you 123-me  123  0

但是在最下面的行中却没有看到数字123,因为它是数字6。我想得到

              A    B  C
0        me 123  123  1
1        me-123  123  1
2          1234  123  0
3         me 12  123  0
4        123 me    6  0
5  6 you 123-me  123  1

3 个答案:

答案 0 :(得分:3)

使用Series.str.extractall从列中获取所有数值,通过Series.unstack整形,检查值并添加DataFrame.any以测试每行至少一个AuditReportIndicator

PackageTrackingIdentification

答案 1 :(得分:3)

使用findall

[y in x for x , y in zip(df.A.str.findall('(\d+)'),df.B.astype(str))]
Out[733]: [True, True, False, False, False, True]

答案 2 :(得分:2)

list

使用“一个或多个非数字”作为模式

jQuery(document).ready(function(){  
    function DisableDays(date) {
         var day = date.getDay();
         if (day == 2 || day == 4 || day == 5 || day == 0) {
             return [false] ; 
         } else {
             return [true]
         } 
     }

    jQuery(function() {
        jQuery( "#datepicker" ).datepicker({
           beforeShowDay: DisableDays, 
           minDate: "+1", maxDate: "+14", 
           onSelect: function(datetext, date) {         
                         var day = date.getDay();
                         if (day == 1 || day == 3) {
                             datetext = datetext + " 11:00-12:00";
                             jQuery('#datepicker').val(datetext);
                         } else {
                             datetext = datetext + " 18:00-19:00";
                             jQuery('#datepicker').val(datetext);
                         }
                     } 
         });
    });
});