熊猫,比较不同长度的数据帧的值*范围*并写回原始 df

Posted

技术标签:

【中文标题】熊猫,比较不同长度的数据帧的值*范围*并写回原始 df【英文标题】:Pandas, comparing different length dataframes for a value *range* & writing back to original df 【发布时间】:2019-10-12 19:07:55 【问题描述】:

我有两个索引长度不同的数据框要比较。

df1: 每日最低股价(每天一个最低价)

df2:每日购买的股票(这里每天购买不止一次)

我想遍历 df2 中每个 dateprice 行,检查 df2[Price] > df1[low] 并在 df2[ 中添加 YES In_range] 如果是,则为该行,如果不是,则为 NO。

我已经包含了表格的屏幕截图和简单的图表以及您可以看到的描述。 Picture of tables with simple diagram

如果您需要更多说明,请告诉我 :)

谢谢, 艾略特

【问题讨论】:

您认为您可以详细说明或改写以“我在寻找什么”开头的句子吗?我不是 100% 清楚你想要达到的目标。 另外,切勿发布您的数据图像。复制粘贴文本。通过这种方式,人们可以轻松获取它并使用它来测试他们的解决方案。 @Alexander Cecile 我已经用图表对其进行了更新和简化,数据已经过清理。 @ Valentino 我找不到一种以整洁的方式将文本从 xlsx 粘贴到 csv 的好方法。我将快速检查一下如何让每个人都更轻松:) 【参考方案1】:

最好的方法是将“低”列添加到第二个数据框。

df2 = df2.merge(df1, on = ['Company', 'time'])

然后在单个数据帧中执行检查很简单

df2['In range'] = df2['Price'] >= df2['low']

【讨论】:

以上是关于熊猫,比较不同长度的数据帧的值*范围*并写回原始 df的主要内容,如果未能解决你的问题,请参考以下文章

更新 QJsonArray 中的值并写回 Qt 中的 Json 文件

基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值

熊猫,我怎样才能避免使用 iterrow (如何根据来自另一个数据帧的值将值分配给数据帧中的新列)

具有不同长度数组的熊猫

按时间戳列过滤/选择熊猫数据帧的行

将大熊猫数据帧的每一列与同一数据帧的每一列相乘的最有效方法