использовать dict из CSV для форматирования данных - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть несколько DF Pandas с различным форматом, которые должны быть преобразованы в общий целевой формат.

Сейчас я пишу словари для каждого DF:

import pandas as pd
import numpy as np

df1 = pd.DataFrame({"original_name":["a","b","c"],"original_value":[1,2,3]})


key_dict = {
  "name":df1.original_name,
  "value":df1.original_value,
  "other_value":np.nan
}

target_colnames = ["name","value","other_value"]

new_df = pd.DataFrame(key_dict, columns = target_colnames)

Моя проблема: сопоставление оригинальных и целевых столбцов с key_dict сохраняется в файле CSV (индекс = значения, столбцы = ключ для каждого DF).

key_df= pd.read_csv("key_df.csv").set_index("key")
key_df= key_df.to_dict()

new_df = pd.DataFrame(key_df["df1"], columns = target_colnames)

Это приводит к следующей ошибке:

 "If using all scalar values, you must pass an index"

Я думаю, это потому, что значения key_df являются строками в отличие от key_dict. Нужно ли применять 'Eval' на клавиши?

Вот как выглядит key_df ["df1"] ":

{'name': 'df1.original_name',
 'other_value': 'np.nan',
 'value': 'df1.original_value'}

1 Ответ

0 голосов
/ 01 ноября 2018

Использование:

key_df = {i:eval(j) for i,j in key_df.items()} # Use iteritems() for python 2
new_df = pd.DataFrame(key_dict, columns = target_colnames)

выход

name    value   other_value
a   1   NaN
b   2   NaN
c   3   NaN

Объяснение

После загрузки и преобразования в csv в dict необходимо выполнить dict понимание, чтобы преобразовать значения pd.Series(), сохраненные как str, в eval(), чтобы вы могли использовать то же самое new_df код, чтобы получить то, что вы хотите

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