gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:53 25 4
gpt4 key购买 nike

我正在将一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com