python - 将多个 pandas 列转换为 json

标签 python pandas dictionary

我的数据框 df 是这样的:

col_1  col_2    col_3
A      Product  1
B      product  2
C      Offer    1
D      Product  1

我想要的是将所有此列转换为 json,条件是 col_2 和 col_1 行应该是键值对。我尝试过以下方法:

df['col_1_2'] = df.apply(lambda row: {row['col_2']:row['col_1']}, axis=1)
df['final_col']=df[['col_1_2','col_3']].to_dict('r')

我的 df['final_col'] 的第一行是:

{'col_1_2': {'product': A}, 'value': 1.0},

但我想要的是:

{'product': A, 'value': 1.0}

最佳答案

通过 col_3 添加缺失的键和值:

df['final_col'] = df.apply(lambda row: {row['col_2']:row['col_1'], 'value':row['col_3']},
                            axis=1)
print (df)
  col_1    col_2  col_3                     final_col
0     A  Product      1  {'Product': 'A', 'value': 1}
1     B  product      2  {'product': 'B', 'value': 2}
2     C    Offer      1    {'Offer': 'C', 'value': 1}
3     D  Product      1  {'Product': 'D', 'value': 1}

如果需要列表输出:

L = [{b:a, 'value':c} for a,b,c in zip(df['col_1'], df['col_2'], df['col_3'])]
print (L)
[{'Product': 'A', 'value': 1}, 
 {'product': 'B', 'value': 2}, 
 {'Offer': 'C', 'value': 1}, 
 {'Product': 'D', 'value': 1}]

json:

import json
j = json.dumps([{b:a, 'value':c} for a,b,c in zip(df['col_1'], df['col_2'], df['col_3'])])
print (j)

[{"Product": "A", "value": 1}, 
 {"product": "B", "value": 2},
 {"Offer": "C", "value": 1}, 
 {"Product": "D", "value": 1}]

关于python - 将多个 pandas 列转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136065/

相关文章:

python - 查找列表的最大值(Python)

python - 如何从 Windows 7 PC 上完全卸载 Python 2.7

python - 没有日期的时间增量

javascript - 如何使用 react 在传单的图层控制选择上添加标题?

python - 如何为 scipy 的 curve_fit 正确定义向量函数

python - 几次请求后 wsgiref.simple_server 出现奇怪的滞后/延迟/延迟/任何问题

python - 如何根据另一列中的日期值范围创建排名列?

python - 在满足某些条件的情况下(在 Python 中)遍历 DataFrame 并计算 DataFrame 中出现次数的最快方法是什么?

python - 以 map 类型创建 DataFrame 分组列

python - 字典和列表值处理