gpt4 book ai didi

python - 查找 pandas 数据框中字符串元素的位置

转载 作者:行者123 更新时间:2023-11-30 23:13:27 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,我怀疑它包含一些字符串

>>> d2
1 2 3 4 5 6 7 8 9 10 ... 1771 \
0 0 0 0 0 0 0 0 0 0 0 ... 0
1 0 0 0 0 0 0 0 0 0 0 ... 0
2 0 0 0 0 0 0 0 0 0 0 ... 0
3 0 0 0 0 0 0 0 0 0 0 ... 0
4 0 0 0 0 0 0 0 0 0 0 ... 0
5 0 0 0 0 0 0 0 0 0 0 ... 0
6 0 0 0 0 0 0 0 0 0 0 ... 0
7 0 0 0 0 0 0 0 0 0 0 ... 0
8 0 0 0 0 0 0 0 0 0 0 ... 0
9 0 0 0 0 0 0 0 0 0 0 ... 0

1772 1773 1774 1775 1776 1777 1778 1779 1780
0 0 0 0 0 0 0 1 398 2
1 0 0 0 0 0 0 1 398 2
2 0 0 0 0 0 0 1 398 2
3 0 0 0 0 0 0 1 398 2
4 0 0 0 0 0 0 1 398 2
5 0 0 0 0 0 0 1 398 2
6 0 0 0 0 0 0 1 398 2
7 0 0 0 0 0 0 1 398 2
8 0 0 0 0 0 0 1 398 2
9 0 0 0 0 0 0 1 398 2

[10 rows x 1780 columns]
>>> any(d2.applymap(lambda x: type(x) == str))
True
>>>

我想找到哪些元素是字符串,并在情况下删除包含这些元素的列。

我怎样才能做到这一点?

我得到了一个奇怪的结果。似乎所有列都有 dtype int 或 float,但同时似乎某些元素是字符串。这怎么可能?

>>> d2.dtypes.drop_duplicates()
1 int64
1755 float64
dtype: object
>>> any(d2.applymap(lambda x: type(x) == str))
True

最佳答案

我想说的是,由于您使用的方法,您得到了误报。

这是我要做的:

要选择可能包含文本的所有列,您可以使用以下命令:

df.select_dtypes(include=['object']).columns

或者:

df.select_dtypes(exclude=['number']).columns

要检查数据框中的任何单元格是否为文本,请使用以下命令:

df.applymap(lambda x: isinstance(x, str)).any().any()

或者删除最后一个 .any() 以查看所有包含文本和不包含文本的列:

df.applymap(lambda x: isinstance(x, str)).any()

调用any(your_dataframe)(以数据帧作为参数)会给您带来误报。

关于python - 查找 pandas 数据框中字符串元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com