Панды: откуда сработало мое предупреждение? - PullRequest
0 голосов
/ 05 октября 2018

Я использую панд в своем скрипте Python.После обновления Python мой скрипт выдает следующую ошибку:

/XXXX/anaconda2/lib/python2.7/site-packages/pandas/io/formats/format.py:1586: FutureWarning:
Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.

Я не вижу никаких трассировок.Как узнать, какая именно строка в моем скрипте вызвала эту ошибку?Возможный ответ может быть применим и к другим предупреждениям.

К сожалению, этот вопрос почему-то был отвергнут вместо того, чтобы помочь решению.После некоторого копания я обнаружил, что ошибка исходит из фрагмента:

 newDF = {} #pd.DataFrame()
 newDF["Time (ns)"] = df["Time"] / ns
 newDF["Current (kA)"] = df['Currnt'] / 1000.0
 newDF["Power-a"] = df['WSumktot'] * erg_per_sec_to_watt
 newDF["Total"] = np.array(df['WSumtot']) * erg_per_sec_to_watt
 newDF =pd.DataFrame(newDF)
 header = ["Time (ns)" , "Current (kA)", "Power_a", "Total"]

 print "before error. The following line triggers the error"
 newDF.to_csv("current_data.csv", columns=header, sep=b'\t', float_format='%.5e', index=False)
 raw_input("data saved. Press enter")

1 Ответ

0 голосов
/ 12 октября 2018

Мне удалось найти источник ошибки.Это достаточно универсально, чтобы быть полезным для других:

Представьте, что у вас есть словарь:

  import pandas as pd
  newDF = {}
  newDF["a"] = pd.Series([1,2,3])
  newDF["b"] = pd.Series([2, 5 ,6])
  newDF["c"] = pd.Series([3, 6, 9])

  newDF =pd.DataFrame(newDF)
  header = ["a" , "b", "c"] # these names must exactly match above

  newDF.to_csv("file_data.csv", columns=header, sep=b'\t', float_format='%.5e', index=False)

Но если одна из строк была случайно изменена:

 header = ["a" , "b", "c1"] # these names must exactly match above

Вышеуказанная ошибка будет видна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...