将 pandas 数据框转换为 bool 值

发布于 2025-01-14 01:01:50 字数 600 浏览 2 评论 0原文

我正在尝试编写一段代码来检查 pandas 系列的 Unix 列中是否有重复项。它应该为 DataSet 返回 boolTrue,因为 130 重复两次并且 对于 DataSet2 为 False。我怎样才能得到下面的预期输出?

import pandas as pd

DataSet = pd.DataFrame({'Unix':[130, 140, 150, 130],
                  'Value':[11,2,3,4]})
DataSet2 =  pd.DataFrame({'Unix':[130, 140, 150, 160],
                  'Value':[11,2,3,4]})
 
print(DataSet.duplicated(subset=['Unix']).bool())
print(DataSet2.duplicated(subset=['Unix']).bool())

预期输出:

True 
False

I am trying to write a code that checks if there are any duplicates in the Unix column in the pandas series. It is supposed to return a bool value of True for DataSet since 130 is repeated twice and a False for DataSet2. How would I be able to get the expected output below?

import pandas as pd

DataSet = pd.DataFrame({'Unix':[130, 140, 150, 130],
                  'Value':[11,2,3,4]})
DataSet2 =  pd.DataFrame({'Unix':[130, 140, 150, 160],
                  'Value':[11,2,3,4]})
 
print(DataSet.duplicated(subset=['Unix']).bool())
print(DataSet2.duplicated(subset=['Unix']).bool())

Expected Output:

True 
False

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一笑百媚生 2025-01-21 01:01:50

您只需要调用 .any() ,如果集合中有任何真值作为参数传递给它,它就会返回 True (相反, .all( ) 仅当给定集合中的所有值都为真时才返回 True):

In [5]: DataSet.duplicated(subset=['Unix']).any()
Out[5]: True

In [6]: DataSet2.duplicated(subset=['Unix']).any()
Out[6]: True

但是,我认为您可能不小心为 DataSet2 复制了错误的数据,因为它是与 DataSet1 相同并且False 答案没有意义。

请注意,您还可以使用 .is_unique,它更适合您的用例:

In [7]: DataSet.Unix.is_unique
Out[7]: False

In [8]: DataSet2.Unix.is_unique
Out[8]: False

作为参考,.any().all()< /code> 函数是一种便捷方法,逻辑上相当于分别对集合中的所有项目使用 orand

You just need to call .any() which returns True if there are any truthy values in the collection passed to it as an argument (conversely, .all() returns True only if all values in a given collection are truthy):

In [5]: DataSet.duplicated(subset=['Unix']).any()
Out[5]: True

In [6]: DataSet2.duplicated(subset=['Unix']).any()
Out[6]: True

However, I think you may have accidentally copied the wrong data for DataSet2 as it is identical to DataSet1 and a False answer wouldn't make sense.

Note that you can also use .is_unique, which is more appropriate for your use-case:

In [7]: DataSet.Unix.is_unique
Out[7]: False

In [8]: DataSet2.Unix.is_unique
Out[8]: False

For reference, the .any() and .all() functions are convenience methods that are logically equivalent to using or and and, respectively, over all the items in a collection.

剧终人散尽 2025-01-21 01:01:50

使用 .any() 而不是 .bool()

print(DataSet.duplicated(subset=['Unix']).any())
print(DataSet2.duplicated(subset=['Unix']).any())

输出:(

True
True

请注意,给定的 DataSetDataSet1问题中的内容是相同的,因此两者都是True,我认为这只是一个拼写错误,并不反映您的实际数据。)

Use .any() instead of .bool():

print(DataSet.duplicated(subset=['Unix']).any())
print(DataSet2.duplicated(subset=['Unix']).any())

Output:

True
True

(Note that DataSet and DataSet1 as given in the question are identical, thus True for both. I assume this is just a typo and does not reflect your actual data.)

荒路情人 2025-01-21 01:01:50

你可以得到 DataSet True 以下代码

print(DataSet["Unix"].duplicated().sum() > 0)

我不知道为什么 DataSet2 是 False

you can get DataSet True following code

print(DataSet["Unix"].duplicated().sum() > 0)

i don know why DataSet2 is False

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文