Pandas系列仅对整数进行布尔运算

2024-05-19 02:55:29 发布

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

我用Pandas将一系列Excel文件解析为df。 在给定的列中,我试图获得低于某个值(7000)的最大值的索引。在

df[columnname][df[columnname]._get_numeric_data() < 7000].idxmax()

Excel文件不是很好,但我不能修改它们。围绕着数据名人,有很多元数据(文本、日期等)。当我分析文件时,数据框下面列出的日期也会出现在列中。在

因此,脚本将引发以下错误:

^{pr2}$

不管怎样,我都可以从操作中排除日期类型,只考虑值。在

注意。带有日期的行因文件而异,有些文件没有这些行。在


Tags: 文件数据文本脚本pandasdfdataget
1条回答
网友
1楼 · 发布于 2024-05-19 02:55:29

谢谢你的帮助。JonhE,你的方法没用因为面具:

^{1}$

不断地提出同样的错误:

^{pr2}$

可能.map()试图同时应用掩码和操作:

(df['x'] < 8)

同时,后者提出了误差。在

尽管如此,我还是通过整合一个面具找到了一个解决方案:

mask1 = df[columnname].map(lambda x: type(x) == int)

到第二个遮罩:

mask2 = df[columnname][mask] < maxval

然后我在手术中使用了第二个面具:

maxsearch = df[columnname][mask2[mask2].index].idxmax()

为此,我不得不依赖.索引来避免产生关键错误。在

最终解决方案:

return df[columnname][(df[columnname][df[columnname].map(lambda x: type(x) == int)] < maxval)[df[columnname][df[columnname].map(lambda x: type(x) == int)] < maxval].index].idxmax()

当然有一个简单的方法。在

相关问题 更多 >

    热门问题