根据csv中需要在python中Map在一起的两个给定列的数据创建一个json文件[closed]

42fyovps  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(99)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
7天前关闭。
Improve this question
| 色谱柱_A|色谱柱_B|
| - ------|- ------|
| 冲压件|菜单|
| 公羊|拉达|
| 希亚姆|利志|
| 利志|公羊|
| 利志|公羊|
| 菜单|公羊|
所以我有一个像这样的csv,现在我必须我得到一个json,它看起来像这样。键:这些是csv列中除列标题外的每个条目的唯一值。对:就像它所暗示的,如果罗摩与菜单配对,罗摩也与罗陀配对,他们就是“罗摩”:[“米努”,“拉达”]

{
    "keys": {
        "Ram" :1,
        "Shyam" :2,
        "Rishi": 3,
        "Menu": 4,
        "Radha": 5,
        "Shyam": 6
        },
    "pairs": {
        "1" : [4,5],
        "2" : [3],
        "3" : [1],
        "4" : [1],
        "5" : []
        }
}
8oomwypt

8oomwypt1#

我同意一些评论,即问题本可以框定得更清楚一点,但我想我可能已经能够根据您的输入和输出解释您所寻找的内容。
看看这是否符合您的要求。

import pandas as pd
import json

df = pd.DataFrame([
    {"Column_A":"Ram", "Column_B":"Menu"},
    {"Column_A":"Ram", "Column_B":"Radha"},
    {"Column_A":"Shyam", "Column_B":"Rishi"},
    {"Column_A":"Rishi", "Column_B":"Ram"},
    {"Column_A":"Rishi", "Column_B":"Ram"},
    {"Column_A":"Menu", "Column_B":"Ram"},
])

a = pd.concat([df["Column_A"], df["Column_B"]]).unique()
keys = {v:i+1 for (i,v) in enumerate(a)}
pairs = df.replace(keys).groupby("Column_A").apply(lambda df: [int(v) for v in list(set(df["Column_B"].values))]).to_dict()

result = {
    "keys":keys,
    "pairs":pairs
}

print(json.dumps(result))

输出:

{"keys": {"Ram": 1, "Shyam": 2, "Rishi": 3, "Menu": 4, "Radha": 5}, "pairs": {"1": [4, 5], "2": [3], "3": [1], "4": [1]}}

如果像在注解中一样,您希望从字符串变量创建DataFrame,则可以包含如下内容:

from os import StringIO
pd.read_csv(StringIO("A,B,C\n1,2,3\n4,5,6"))

相关问题