Как преобразовать CSV в линейный протокол - PullRequest
0 голосов
/ 13 июля 2020

Как мне отобразить CSV-файл в формате строкового протокола, например, в Infxdb?

Мои данные CSV, как показано ниже ...

time, avg_FreshOrders, p95_FreshOrders, FreshOrders
1593648000000,1479.08407079646,2589,226
1593475200000,2242.8617021276596,5622,188
1593734400000,1682.3375,2738,160

Я использую Python для преобразования в линейный протокол, как показано ниже

import pandas as pd
#convert csv's to line protocol

df_full = pd.read_csv("data/FreshOrders.csv")
df_full["measurement"] = ['FO' for t in range(len(df_full))]
lines = [str(df_full["measurement"][d])
         + ",type=FreshOrders"
         + " "
         + "avg_FreshOrders=" + str(df_full["avg_FreshOrders"][d]) + ","
         + "p95_FreshOrders=" + str(df_full["p95_FreshOrders"][d]) + ","
         + "FreshOrders=" + str(df_full["FreshOrders"][d])
         + " " + str(df_full["time"][d]) for d in range(len(df_full))]
#append lines to a text file with DDL & DML:
thefile = open('data/import.txt', 'a+')
for item in lines:
    thefile.write("%s\n" % item)

При запуске этого Python кода я получаю следующие ошибки.

Traceback (most recent call last):
  File "csv_to_line.py", line 6, in <module>
    lines = [str(df_full["measurement"][d])
  File "csv_to_line.py", line 6, in <listcomp>
    lines = [str(df_full["measurement"][d])
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\indexes\base.py", line 4405, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
  File "pandas\_libs\index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 997, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 1004, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 0

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 13 июля 2020

Если у вас возникли проблемы с ключевым словом, вы можете использовать вместо него index.

import pandas as pd

# convert csv's to line protocol

df_full = pd.read_csv("haha.csv")
df_full["measurement"] = ['FO' for t in range(len(df_full))]
lines = []
for idx in range(len(df_full)):
    temp = str(df_full.iloc[idx, -1]) + ",type=FreshOrders" + " " + "avg_FreshOrders=" + str(df_full.iloc[idx, 1]) + ","\
    + "p95_FreshOrders=" + str(df_full.iloc[idx, 2]) + "," + "FreshOrders=" + str(df_full.iloc[idx, 3]) + " " + \
           str(df_full.iloc[idx, 0])
    lines.append(temp)

# append lines to a text file with DDL & DML:
thefile = open('data/import.txt', 'a+')
for item in lines:
    thefile.write("%s\n" % item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...