我有一个DataFrame,如下所示:
data = [
['2022-12-04 00:00:00', 5000.00],
['2022-12-04 00:00:00', 6799.50],
['2022-12-04 00:00:00', 5000.00],
['2023-01-10 00:00:00', 5000.00]
]
df = pd.DataFrame(data, columns=['Date', 'Float'])
date_input = "2022-12-04 00:00:00"
float_input = "5000.00"
检查DF中是否存在与值“date”和“float”精确匹配的字符串的最佳方法是什么?
在这种情况下,我希望得到"Yes“输出,因为DataFrame的第一行包含了”date“和”float“的组合。
我尝试了这样的方法,但它无助于确定某个“date_input”日期是否存在“float_input”值的匹配
if ((df['Date'] == pd.Timestamp(date_input)).any()) and (df['Float'] == float(float_input).any():
print('YES')
else:
print("No")
3条答案
按热度按时间xt0899hw1#
晚安,朋友,我执行了你尝试过的过程。首先,让我们来分解一下:
第一步:
您的数据集具有不正确的值,您必须将日期更正为字符串,然后才能将其放入pd.DataFrame。
第二步:
在解决了前面的问题之后,我们执行dateframe过程:
现在我们可以可视化dateframe,紧接着我们看到我们要查找的列之一有类型问题,因此我们必须执行转换
第三步:
使用一个panda工具,我们可以将类型转换为datetime,你可以看到我使用了dayfirst参数,这是可选的,但是因为我们没有小时,分钟和秒,我没有选择telos,我参考了文档,你会觉得很有趣。
第四步:
让我们以简单的方式转到咨询,按部分执行咨询,一次查找一个。我们找到了您的值查询
另一种搜索方法是查找从每个查询返回True的索引,使用and运算符,我们设法返回查询的值
以另一种执行形式执行上一步中的表
步骤五:
你的这个检查我不是很理解,用一种简单的方法,我检查变量是否为空,我像你的例子一样执行返回
zbq4xfa02#
如果我对您的问题理解正确的话,我相信您可以使用DataFrame的loc方法来选择与'date_input'和'float_input'值匹配的行,从而检查DF中是否存在与'date'和'float'值完全匹配的字符串。
然后,您可以检查生成的DataFrame是否为空,这表示至少有一行的值与“date_input”和“float_input "完全匹配。
修改代码
polhcujo3#
如果[日期输入,浮点输入]在df.值中:
打印("是")
否则:
打印("否")