Формирование данных CSV с фреймами данных Python - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть некоторые данные CSV, которые я хочу переформатировать как

enter image description here

Я хочу изменить этот формат с помощью Data1-4 в качестве имен столбцов и Value 1-4 в качестве значений помимо данных A и B

У меня миллионы строк, и я не хочу их зацикливать. Я работаю с фреймом данных Python.

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

Еще несколько примеров данных, которые я пытаюсь сделать:

enter image description here enter image description here

1 Ответ

0 голосов
/ 13 сентября 2018

Если ввод Series с 3 уровнями MultiIndex, используйте Series.unstack:

print (type(s))
<class 'pandas.core.series.Series'>
print (s.index.nlevels)
3

df = s.unstack(fill_value=0)

Или, если в качестве входных данных используется 4 столбца DataFrame сначала отменить пропущенные значения в первых 2 столбцах путем прямого заполнения, а затем изменить его на DataFrame.set_index с помощью Series.unstack:

print (type(df))
<class 'pandas.core.frame.DataFrame'>
print (len(df.columns))
4

df.columns = ['Col1','Col2','Col3','Col4']
cols = ['Col1','Col2']
df[cols] = df[cols].ffill()
df = df.set_index(['Col1','Col2','Col3'])['Col4'].unstack(fill_value=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...