Python UserWarning:布尔系列键将重新编制索引以匹配数据帧索引

Python UserWarning:布尔系列键将重新编制索引以匹配数据帧索引,python,pandas,jupyter-notebook,user-warning,Python,Pandas,Jupyter Notebook,User Warning,使用此语句时,在单个语句中显示多个警告: Internaldfdeny=pd.DataFrame({'Count':Internaldf[Internaldf['Status']=='deny'][Internaldf['SrcIP']!="NA"][Internaldf['DstIP']!="NA"][Internaldf['TimeStamp']-Internaldf['TimeStamp'].iloc[0]<pd.tslib.Timedelta(minutes=30)].groupb

使用此语句时,在单个语句中显示多个警告:

Internaldfdeny=pd.DataFrame({'Count':Internaldf[Internaldf['Status']=='deny'][Internaldf['SrcIP']!="NA"][Internaldf['DstIP']!="NA"][Internaldf['TimeStamp']-Internaldf['TimeStamp'].iloc[0]<pd.tslib.Timedelta(minutes=30)].groupby(['DstPort','SrcIP']).size()}).reset_index().pivot_table('Count',['DstPort'],'SrcIP').fillna(0).to_sparse(fill_value=0)
显示

我认为需要:

m1 = Internaldf['Status']=='deny'
m2 = Internaldf['SrcIP']!="NA"
#if want check non NaNs
#m2 = Internaldf['SrcIP'].notnull()
m3 = Internaldf['DstIP']!="NA"
#if want check non NaNs
#m3 = Internaldf['DstIP'].notnull()
m4 = Internaldf['TimeStamp']-Internaldf['TimeStamp'].iloc[0] < pd.Timedelta(minutes=30)

#chain condition with & for AND or by | for OR, for column use reset_index 
df=Internaldf[m1 & m2 & m3 & m4].groupby(['DstPort','SrcIP']).size().reset_index(name='Count')

Internaldfdeny=df.pivot_table('Count','DstPort','SrcIP').fillna(0).to_sparse(fill_value=0)
print (Internaldfdeny)
SrcIP    10.208.2.56  10.208.2.70  10.208.23.136
DstPort                                         
137              0.0          1.0            0.0
8081             1.0          0.0            0.0
8888             0.0          0.0            1.0
m1=Internaldf['Status']=='deny'
m2=内部DF['SrcIP']=“不适用”
#如果要检查非NAN
#m2=Internaldf['SrcIP'].notnull()
m3=内部DF['DstIP']=“不适用”
#如果要检查非NAN
#m3=Internaldf['DstIP'].notnull()
m4=Internaldf['TimeStamp']-Internaldf['TimeStamp'].iloc[0]
欢迎来到StackOverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。我仍然不明白为什么它会给出warning@HarshSharma-我没有您的示例数据,但猜测问题在于
DataFrame
constructor。我已经添加了表,很抱歉无法直接添加table@HarshSharma-没问题,已经换了。我的解决方案如何工作?Internaldf.query()方法可以工作,感谢您参考它
                   TimeStamp          SrcIP          DstIP  DstPort Status
0 2018-03-31 03:48:13.731929  192.168.52.43  166.62.28.228       80  close
1 2018-03-31 03:48:13.749007  10.208.23.136    96.45.33.73     8888   deny
2 2018-03-31 03:48:13.799235    10.208.2.56   14.142.64.16     8081   deny
3 2018-03-31 03:48:13.799235  10.208.35.193  13.75.119.102      443  close
4 2018-03-31 03:48:13.799235    10.208.2.70   10.208.3.255      137   deny
m1 = Internaldf['Status']=='deny'
m2 = Internaldf['SrcIP']!="NA"
#if want check non NaNs
#m2 = Internaldf['SrcIP'].notnull()
m3 = Internaldf['DstIP']!="NA"
#if want check non NaNs
#m3 = Internaldf['DstIP'].notnull()
m4 = Internaldf['TimeStamp']-Internaldf['TimeStamp'].iloc[0] < pd.Timedelta(minutes=30)

#chain condition with & for AND or by | for OR, for column use reset_index 
df=Internaldf[m1 & m2 & m3 & m4].groupby(['DstPort','SrcIP']).size().reset_index(name='Count')

Internaldfdeny=df.pivot_table('Count','DstPort','SrcIP').fillna(0).to_sparse(fill_value=0)
print (Internaldfdeny)
SrcIP    10.208.2.56  10.208.2.70  10.208.23.136
DstPort                                         
137              0.0          1.0            0.0
8081             1.0          0.0            0.0
8888             0.0          0.0            1.0