Простой способ «исправить» это:
R = {}
for i in range(0, 5):
print(lines[0][i])
if lines[0][i] != 'userID':
if lines[0][i] !='drugName':
grouped_column = []
for j, row in enumerate(lines):
try:
if j > 0:
grouped_column.append(row[i])
R.update({lines[0][i]:grouped_column})
except IndexError:
pass
print(R)
df3 = pd.DataFrame(R)
Это скорее обходной путь в вашей проблеме, чем решение. Вы должны отладить и посмотреть, что не так. Но проблема в том, что ваш row[i]
не существует, было бы лучше, если вы разместите здесь весь код или значения из строк.
Этот код будет сравнивать и проверять, содержит ли строка необходимый размер, регистр не будет игнорировать эту часть:
import csv
import pandas as pd
FILE = "drugs.csv"
def main():
with open (FILE, encoding="utf8") as f:
datas = csv.reader(f, delimiter = '\t')
lines = [row for row in datas]
R = {}
for i in range(len(lines[0])):
if lines[0][i] != 'userID' and lines[0][i] !='drugName':
grouped_column = []
for j, row in enumerate(lines):
if j > 0 and len(row) > i:
grouped_column.append(row[i])
R.update({lines[0][i]:grouped_column})
df3 = pd.DataFrame.from_dict(R, orient="index")
df3.transpose()
if __name__ == "__main__":
main()
Это шаблон «Составное приложение»; сердце сервис-ориентированной архитектуры. Это то, что продавцы ESB продают: способ разместить дополнительную бизнес-логику где-то, что создает составное приложение из существующих приложений.
Это не просто, потому что ваше составное приложение - это не просто маршрутизация. Это правильная новая составная транзакция, размещенная поверх маршрутизации.
Подсказка. Посмотрите на получение хорошего ESB, прежде чем идти слишком далеко. Это быстро выходит из-под контроля и полезна дополнительная поддержка. Даже если вы не купите что-то вроде Sun JCAPS или Open ESB , вы будете рады, что узнали, что он делает и как они организовывают сложные составные приложения.
Оркестровка, маршрутизация и трансформация.
Вы не делаете ничего по техническим причинам, случайно или просто для удовольствия,
Приложение промежуточного программного обеспечения должно это делать. Система А не должна знать, что другой параметр существует, и, конечно, не будет знать, как его получить.