Как я могу динамически сопоставить одну ячейку со многими ячейками из другого столбца в словаре и преобразовать JSON?Python

Программы на Python
Ответить
Anonymous
 Как я могу динамически сопоставить одну ячейку со многими ячейками из другого столбца в словаре и преобразовать JSON?

Сообщение Anonymous »

У меня есть такая таблица. Данные столбца являются динамическими и могут различаться N различными способами.
Например, столбец "h" может иметь значения "n". Мне нужно сопоставить их с правильными значениями из столбца «t», и каждый «t» может иметь значения «n» в столбце «c».
Таким образом, h1 может иметь 3 совпадающих «t» и «t1» могут иметь 2 «c», точно так же, как «t2» может иметь 3 «c» и так далее. Числа разные.
ПРИМЕЧАНИЕ. h1 и h2 не всегда являются последовательностями. Например, у меня может быть h1, а затем h40. Единственная последовательная часть в электронной таблице — это количество букв «c» в каждой букве «t».
Пример таблицы



h
t
c
флаг




h1
t001 случайный текст (из h1 просто покажите, где совпадение)
c001-случайный текст
0




c002 случайный текст
0



t002 случайный текст
c001-случайный текст
1




c002-случайный текст
1




c003-случайный текст1



t003 случайный текст
c001-случайный текст
< td>2


h2
t001 случайный текст
c001-случайный текст
3




c002-случайный текст
3



t002 случайный текст
c001-случайный текст
4




c002-случайный текст
4



и лист продолжайте... поэтому сначала мне нужно сопоставить каждую букву "h" с правильным "t" и каждую букву "t" с правильным "c" в dict!
Мне нужен JSON, похожий на этот.< /p>

Код: Выделить всё

{
"h1": {
"t001 random text": {
"0": "c001-random text",
"1": "c002-random text"
},
"t2 random text": {
"2": "c001-random text",
"3": "c002-random text",
"4": "c003-random text"
},
"t3 random text": {
"5": "c001-random text"
}
},
"h2": {
"t1 random text": {
"6": "c001-random text",
"7": "c002-random text"
},
"t2 random text": {
"8": "c001-random text",
"9": "c002-random text"
}
}
}
У меня вот так.

Код: Выделить всё

[
{
"t1 from h1": {
"0": "c1 from t1 h1",
"1": "c2 from t1 h1"
}
},
{
"t2 from h1": {
"2": "c1 from t2 h1",
"3": "c2 from t2 h1",
"4": "c3 from t2 h1"
}
},
{
"t3 from h1": {
"5": "c1 from t3 h1"
}
},
{
"t1 from h2 ": {
"6": "c1 from t1 h2",
"7": "c2 from t1 h2"
}
},
{
"t2 from h 2": {
"8": "c1 from t2 h2",
"9": "c2 from t2 h2"
}
}
]
Это код, я изменил его, поэтому теперь моя проблема: могу ли я сопоставить каждый h с каждым t?

Код: Выделить всё

import pandas as pd
import json

sheet = pd.read_excel("sheet.xlsx")
serie_t = sheet['t'].dropna(how='any').reset_index(drop=True)
df = pd.DataFrame(sheet)
data = []

#match t with c
for indext , t in enumerate(serie_t):
#filter returns dataframe row by flag column value returns all values ​​using flag value
filter_c = df[df['flag']== indext]
#converting dataframe of c column to dictionary
filtered_c = filter_c['c'].to_dict()
#inserting the value in the list by the t
listed = {t:filtered_c}
data.insert(indext,listed)

new_json = json.dumps(data)
with open("new_json.json", "w") as file:
file.write(new_json)
ПРИМЕЧАНИЕ
Логика, которую я пробовал. Я получаю индекс столбца t, проверяю его по ЗНАЧЕНИЮ столбца флага и пытаюсь получить значение c. Если я устанавливаю в коде значение 0 или 1, код работает. Но в этом случае, если индекс столбца равен 0, я перехожу к столбцу флагов и проверяю, равно ли ЗНАЧЕНИЕ столбца 0, и при этом получаю значение ячейки в столбце «c»

Подробнее здесь: https://stackoverflow.com/questions/791 ... nto-dictio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»