Например, столбец "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
t1 случайный текст (из h1 просто показать совпадение)
c001 случайный текст
0
c002 случайный текст
0
< td>
t2 из h1
c001 случайный текст
1
c002 случайный текст
1
c003 случайный текст
1
t3 из h1
c1 случайный текст
2
h2
t1 из h2
c001 случайный текст
3
c002 случайный текст
3
t2 из h2
c001 случайный текст
4
c002 случайный текст
4
и лист продолжится... поэтому мне нужно сопоставить каждую букву "h" с правильной буквой "t" " и каждая "t" сначала исправляет "c" в dict!
Мне нужен JSON, подобный этому.
Код: Выделить всё
{
"h1": {
"t1 from h1": {
"0": "c1 from t1",
"1": "c2from t1"
},
"t2 from h1": {
"2": "c1 from t2",
"3": "c2 from t2",
"4": "c3 from t2"
},
"t3 from h1": {
"5": "c1 from t3"
}
},
"h2": {
"t1 from h2": {
"6": "c1 from t1",
"7": "c2from t1"
},
"t2 from h2": {
"8": "c1 from t2",
"9": "c2from t2"
}
}
}
Код: Выделить всё
[
{
"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
Мобильная версия