【问题标题】:Python: Data displayed as ‘None’ in dataframePython:数据在数据框中显示为“无”
【发布时间】:2023-03-05 01:06:01
【问题描述】:

我正在尝试将表中的数据提取到数据框中,但这样做时,我只显示“无”,而不是我在表中输入的原始值/数据的数量。代码如下:

conditions = [
(ontime['DepDelay'] <= 0),
(ontime['DepDelay'] >= 0)
]
values = ['2', '1']
ontime['DelayStatus'] = np.select(conditions, values)
pd.DataFrame(ontime)

但是,在“准时”从表中提取数据时,它显示为“无”而不是值“1”或“2”

q4 = c.execute('''
SELECT ontime.Origin AS Origin,
   ontime.Dest AS Dest,
   ontime.DayOfMonth AS DayOfMonth,
   ontime.Month AS Month,
   ontime.Year AS Year,
   ontime.ArrDelay AS ArrivalDelay,
   ontime.DepDelay AS DepDelay,
   ontime.DelayStatus AS DelayStatus
FROM ontime
WHERE ontime.Cancelled='0' AND
  ontime.ArrDelay > '0' AND
  ontime.ArrDelay != 'Na' AND
  ontime.DepDelay != 'Na'
GROUP BY Origin, Dest, DayOfMonth,Month,Year
ORDER BY Year ASC, Month ASC, DayOfMonth ASC
''').fetchall()
q4 = pd.DataFrame (q4, columns['OriginCountry','Destination','DayOfMonthArrive','MonthArrive','YearArrive','ArrivalDelay','DepDelay','DelayStatus'])
pd.DataFrame(q4)

虽然不完全确定我什至将类从字符串更改为整数,但我仍然得到值“无”

【问题讨论】:

  • 第一个代码 sn-p 中的 np 和第二个代码中的 c 是什么?返回值中的None 表示数据库在该列中有NULL 值。我会首先使用 pgadmin 或 dbeaver 等数据库客户端来检查数据库表,看看它们是否包含您认为的数据。
  • 对。您的第一个 sn-p 显示您创建 DelayStatus 作为 DataFrame 中的计算字段。这不会影响数据库表。您是否打算更改数据库本身?
  • @Code-Apprentice 它们几乎是 numpy 和一些数据库游标(可能来自 SQLAlchemy),尽管它们仍应指出哪些正在使用!
  • @Code-Apprentice 是的,正如 ti7 所提到的,谢谢!我将研究一个数据库客户端
  • @Tim Robert,是的,这就是我最初打算做的,即在数据库中添加一个新列,但是我意识到上面的代码可能只适用于 df但不在数据库中,谢谢指出

标签: python sql pandas


【解决方案1】:

第一个代码 sn-p 计算名为“DelayStatus”的数据框中的列的值。它永远不会将该值保存回数据库。所以当你直接做 SQL 查询时,你仍然会得到None,因为底层数据库列有NULL

从我看到的情况来看,您至少有 2 个选项:

  1. 您可以使用带有计算出的“DelayStatus”的数据框进行进一步处理。

  2. 您可以编写 SQL 代码来更新每行中的 DelayStatus 列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多