Python pandas关于重新索引的Boolean Series键的用户警告

2024-10-01 09:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用索引访问熊猫.DataFrame,它给了一个用户群,它们不会干扰它的输出。我希望知道这个userwarning是怎么发生的,我应该怎么做才能避免这些userwarning?谢谢大家的关注。在

df = pandas.DataFrame([[k, ass4Dict[k], k[:2], k[-2:]] for k in ass4Dict])
df.columns = ['string', 'count', 'lstr', 'rstr']
df = df[df['count'] >= 10]
**df = df[df['lstr'].map(lambda x:x in gram2Dict)][df['rstr'].map(lambda x:x in gram2Dict)]**
df['lstrCNT'] = df['lstr'].map(lambda x: float(gram2Dict[x]))
df['rstrCNT'] = df['rstr'].map(lambda x: float(gram2Dict[x]))
df['conPow'] = df['lstrCNT'] * df['rstrCNT']
df['lstrPow'] = df['count'] / df['lstrCNT']
df['rstrPow'] = df['count'] / df['rstrCNT']
df['aux4Ratio'] = df['count'] / df['conPow']
df['aux4Log'] = df['aux4Ratio'].map(lambda x: -log(x))
**df = df[df['aux4Log'] < 11][df['lstrPow'] >= 0.5][df['rstrPow'] >= 0.5]**

。。。。在

沈钦言359

纪小蕊158

顾持钧949

林晋修642

0.256721019745 1.22976207733

中华人民共和国_摘录:第153页:UserWarning:将重新索引布尔序列键以匹配数据帧索引。 df=df[df['lstr'].map(lambda x:x in gram2Dict)][df['rstr'].map(lambda x:x in gram2Dict)] 中华人民共和国_摘录:161:UserWarning:将重新索引布尔序列键以匹配数据帧索引。 df=df[df['aux4Log']<;11][df['lstrPow']>;=0.5][df['rstrPow']>;=0.5]


Tags: lambdainmapdataframedfcountuserwarninglstr
1条回答
网友
1楼 · 发布于 2024-10-01 09:31:51

如果我们只取最后一行并将其重新创建为以下示例:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,50,size=(50, 4)), columns=list('ABCD'))
df[df.A < 11][df.B >= 25][df.C >= 25]

最后一行是将一系列切片串在一起。在第一个切片之后,每个后续切片都需要重新编制索引,因为生成的数据帧不包含前一个切片中的所有项目。在

在这种情况下,正确的形式是将布尔切片合并为一个表达式:

^{pr2}$

其他可能引起此警告的情况如下:

df[df.sort_values(['A'], ascending=[False]).duplicated(subset='B', keep='first')]

在这种情况下,请使用loc命令:

df.loc[df.sort_values(['A'], ascending=[False]).duplicated(subset='B', keep='first')]

相关问题 更多 >