Python DataFrame – 删除具有属于值列表的列值的行

Python DataFrame – 删除具有属于值列表的列值的行,第1张

概述我正在寻找以下问题的解决方案. 有一个DataFrame: data = np.array([['', 'col1', 'col2'], ['row1', 1, 2], ['row2', 3, 4]])df = pd.DataFrame(data=data[1:,1:], index=data[1:,0],columns=data[ 我正在寻找以下问题的解决方案.
有一个DataFrame:

data = np.array([['','col1','col2'],['row1',1,2],['row2',3,4]])df = pd.DataFrame(data=data[1:,1:],index=data[1:,0],columns=data[0,1:])

我希望保留行,例如,列col1中的值属于列表[1,而列col2中的值属于列表[2,4].
这是我认为会起作用的

df1 = df[df['col1'].isin([1,2]) & df['col2'].isin([2,4])]

但是df1打印为Empty DataFrame.
另一方面,这种方法

df1 = df[(df.col1 in [1,2]) & (df.col2 in [2,4])]

结果是

ValueError: The truth value of a SerIEs is ambiguous. Use a.empty,`a.bool()`,`a.item()`,`a.any()` or `a.all()`.

期望在其中获得带有row1的DataFrame.
毋庸置疑,我对Python相对较新.非常感谢你的帮助.

解决方法 您需要将数字系列转换为数字类型:

df = pd.DataFrame(data=data[1:,1:].astype(int),1:])df1 = df[df['col1'].isin([1,4])]print(df1)      col1  col2row1     1     2

您的代码不起作用,因为您的初始数据数组是object类型,表示指向任意类型的指针. Pandas不会隐含地应用转换,因为在大多数情况下这会非常昂贵.

如果您已经构建了Pandas数据帧,则可以将数值转换应用为单独的步骤:

df = df.astype(int)

或者,仅转换指定的系列:

cols = ['col1','col2']df[cols] = df[cols].apply(pd.to_numeric,errors='coerce')
总结

以上是内存溢出为你收集整理的Python DataFrame – 删除具有属于值列表的列值的行全部内容,希望文章能够帮你解决Python DataFrame – 删除具有属于值列表的列值的行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存