Например, столбец "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"
}
}
]
Код: Выделить всё
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
Мобильная версия