【问题标题】:How to deduct discrete values in separate columns of a Pandas DataFrame如何在 Pandas DataFrame 的不同列中扣除离散值
【发布时间】:2019-02-20 05:23:24
【问题描述】:

我是 Python 新手(4 周),刚刚开始使用 Pandas 和 api 获取请求。我将 api 数据提取到 pandas 数据框中,并尝试对 DataFrame 的不同列(即开盘、高点、低点、收盘、成交量)中的财务数据执行基本数学运算。

我编写了以下代码(注意:参数和api请求url不是逐字记录的,它们返回的是按列分隔的正确数据集):

import requests
import json
import pandas as pd

payload = {"key": "value"}

response = requests.get("URL", params=payload)
api_data = json.loads(response.text)
data = pd.DataFrame(api_data)
current_day_delta = data['close'].iloc[-1] - data['open'].iloc[-1]
print(current_day_delta)

TypeError: 不支持的操作数类型 -: 'str' 和 'str'

如何设置代码来计算 current_day_delta,没有错误?

【问题讨论】:

  • 错误提示您不能从字符串中减去 sting。这意味着 `data['close'].iloc[-1]' 是字符串。请检查两列的数据类型。
  • 您好,print(type(data['close'])) ('open' 列相同)
  • Also, a sample return of print(data['close']): 540 3659.04000000 541 3665.18000000 542 3680.06000000 543 3631.05000000 544 3631.46000000 545 3609.40000000 546 3590.56000000 547 3602.47000000 548 3618.41000000 549 3667.58000000 550 3898.60000000 551 3888.02000000 Name:关闭,长度:552,数据类型:对象
  • 你能做以下吗? 1. 打印 data.head() 以查看前五列。 2. 如果它显示正确的列,则打印出您要用于减法的值。那是 print data['close'].iloc[-1] 和其他列相同。然后发布结果。另外,您使用错误的方式打印出熊猫列的数据类型。正确的方法是 data['close'].dtype 或类似的东西。
  • 打开列在位置 [-1] 产生 3897.35000000 在位置 [-1] 关闭列产生 3898.11000000

标签: python-3.x pandas


【解决方案1】:

如果 data.head() 打印出正确的数字,请尝试这样做

# your code
current_day_delta = data['close'].iloc[-1] - data['open'].iloc[-1]

# change this to
current_day_delta = float(data['close'].iloc[-1]) - float(data['open'].iloc[-1])

您从 api 获取的数据很可能以字符串格式返回,仅通过打印 data.head() 无法识别

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多