python - 将 JSON 读入 pandas DataFrame 并添加/合并它们

标签 python json pandas

我正在将 csv 文件读入我的 pandas DataFrame。其中一列 my_json_col 是 JSON(字符串形式)。

我将 read_json 函数应用于 my_json_col

   df['json_col'].apply(read_json)

所以这个 JSON:

   [{"C5": 4, "Descr": "descr1"}, {"C6"": 2, "Descr": ""descr2"}, {"C8": 9, "Descr": ""descr5"}]

会变成

     C5    C6    C8       Descr
 0   4.0   NaN   NaN      descr1
 1   NaN   2.0   NaN      descr2
 2   NaN   NaN   9.0      descr5

     [{"C1":  7, "Descr": "descr3""}, {"C5"":  3, "Descr"": "descr1""}, {"C4": 5, "Descr": "descr1"}]

会变成

      C1    C4     C5   Descr
  0   7.0   NaN   NaN   descr3
  1   NaN   NaN   NaN   descr4
  2   NaN   5.0   3.0   descr1

“添加”这两个数据框应该给我:

     C1    C4    C5    C6     C8      Descr
 0   NaN   5.0   7.0   NaN    NaN     descr1
 1   NaN   NaN   NaN   2.0    NaN     descr2
 2   7.0   NaN   NaN   NaN    NaN     descr3
 3   NaN   NaN   NaN   NaN    NaN     descr4
 4   NaN   NaN   NaN   NaN    9.0     descr5

这里数字 3 和 4 被添加到 C1 的 descr1 中。

现在我的 JSON 中有 C1-C9 列(并非所有 JSON 中都存在),它们都是数字。

我还有 Descr 列,其值为 descr1-descr5,均为文本。

我有很多这样的 JSON,我的目标是将它们添加在一起,所以最后我将数字添加在一起,并且 Column Descr 具有值 descr1-descr5。

   C1   C2    C3   C4   C5   C6   C7   C7   C9    Descr
 0                                                descr1
 1           added numbers                        descr2
 2           added numbers                        descr3 
 3                                                descr4
 4                                                descr5

我尝试过合并和求和,但没有任何结果。也许我不应该使用 apply(read_json) 而是有一个不同的起点?任何帮助将不胜感激

最佳答案

使用concat使用聚合 sum,为了避免 0 而不是 NaN 添加 min_count=1 参数:

df = pd.concat([df1, df2], sort=True).groupby('Descr', as_index=False).sum(min_count=1)
print (df)
    Descr   C1   C4   C5   C6   C8
0  descr1  NaN  5.0  7.0  NaN  NaN
1  descr2  NaN  NaN  NaN  2.0  NaN
2  descr3  7.0  NaN  NaN  NaN  NaN
3  descr4  NaN  NaN  NaN  NaN  NaN
4  descr5  NaN  NaN  NaN  NaN  9.0

最后更改列顺序:

df = df[df.columns[1:].tolist() + df.columns[:1].tolist()]
print (df)
    C1   C4   C5   C6   C8   Descr
0  NaN  5.0  7.0  NaN  NaN  descr1
1  NaN  NaN  NaN  2.0  NaN  descr2
2  7.0  NaN  NaN  NaN  NaN  descr3
3  NaN  NaN  NaN  NaN  NaN  descr4
4  NaN  NaN  NaN  NaN  9.0  descr5

关于python - 将 JSON 读入 pandas DataFrame 并添加/合并它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57586678/

相关文章:

python - 找出字符串编码的聪明方法?

javascript - 将 HTML 表转换为 Json

javascript - 创建 Angular 树控件时使用 json 作为数据源

javascript - 如何查看大 JSON 对象是否包含值?

python - 将多索引列除以总和以创建百分比

mysql - 如何在 SQLAlchemy 的 `charset` 中使用 `encoding` 和 `create_engine`(创建 Pandas 数据框)?

python - 如何在pandas数据框中以分钟为单位分组秒

python - 将 Python 代码转换为符合 PEP8 的工具

python - pandas 中的连胜数 ID

python - 模板中的 Django forloop