【问题标题】:Adding null values to a pandas dataframe向熊猫数据框添加空值
【发布时间】:2014-11-07 16:13:14
【问题描述】:

我有一个 pandas 数据框,用于创建 JSON,而 JSON 又用于显示 highcharts 图表。

熊猫数据框:

Date        colA    colB
12-Sep-14   20      40
13-Sep-14   50      10
14-Sep-14   12      -20
15-Sep-14   74      43

有没有办法将一些 colA 和 colB 值更改为 null。这样做的原因是我最终需要一个看起来像这样的 JSON:

[
    [12-Sep-14, 20, 40],
    [13-Sep-14, null, null],
    [14-Sep-14, 12, -20],
    [15-Sep-14, 74, 43]
]

这样做的原因是我需要一个高图表,其中某些绘图点是空白的。为此,您需要指定日期,后跟 null。

所以我需要以某种方式更新 pandas 数据框中的某些值,以便一旦我使用 .to_json() 将其转换为 JSON,那么 json 将包含上面示例中指定的空值。

感谢您的任何建议。

【问题讨论】:

  • 这会删除 null 周围的 "":df.to_json(orient='values').replace("\"","")

标签: python pandas highcharts


【解决方案1】:

代码如下:

import numpy as np

# create null/NaN value with np.nan
df.loc[1, colA:colB] = np.nan

解释如下:

  1. 定位需要替换的实体:df.loc[1, colA:colB] 表示选择从colA到colB的第1行和列;
  2. 将 NaN 值 np.nan 分配给特定位置。

【讨论】:

  • 您能否解释一下这是如何工作的?谢谢!
  • 您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以在help center找到更多关于如何写好答案的信息。
【解决方案2】:

尝试使用 NaN,这是 Pandas 的缺失值:

df = pd.read_clipboard()
df.colA.iloc[1] = NaN

您也可以使用None 代替NaN。请注意,这些术语均未使用引号输入。

然后你可以使用to_json() 来获取你的输出:

df.to_json()
'{"Date":{"0":"12-Sep-14","1":"13-Sep-14","2":"14-Sep-14","3":"15-Sep-14"},"colA":{"0":20.0,"1":null,"2":12.0,"3":74.0},"colB":{"0":40,"1":10,"2":-20,"3":43}}'

【讨论】:

  • 感谢您的建议,但 NaN、None 或 '' 不起作用。 NameError:未定义名称“NaN”。 json 是使用 df.to_json(orient='values') 创建的。 json 已正确创建。问题在于尝试插入空值。生成的 json 需要看起来与示例完全相同,即:单词 null 不带引号。感谢您提供帮助。
  • 如果你在 Pandas 数据框中有 NaN 并且你调用 to_json() 方法,它会创建你所说的你想要的。我将更新上面的示例以进行说明。什么代码给你“NameError”错误?
  • 除非您指定from numpy import nan,否则这将不起作用。原因是nan不是来自pandas,而是来自numpy。
【解决方案3】:

这行得通吗?

import pandas as pd
# Read in data frame from clipboard
df = pd.read_clipboard()
df = df.replace(df.iloc[1][1:],'null')

        Date  colA  colB
0  12-Sep-14    20    40
1  13-Sep-14  null  null
2  14-Sep-14    12   -20
3  15-Sep-14    74    43

在这里,df.iloc[1] 可以访问第 1 行

最后,

df.to_json(orient='values').replace("\"","")

给出不带“”的json

[[12-Sep-14,20,40],[13-Sep-14,null,null],[14-Sep-14,12,-20],[15-Sep-14,74,43]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    相关资源
    最近更新 更多