Панды read_fwf

У меня не получается четкая таблица. Пожалуйста, помогите. Мои данные:

    0 2017   IX 2018       X 2018       X 2018       X 2018        0 2017   IX 2018   X 2018    X 2018   X 2018
                                                                                             0 2017       IX 2018                                    0 2017   IX 2018

    UKUPNO                                               1.053    1.075         1.093        103,8        101,7         1.633    1.669     1.701      104,2    101,9
A   Poljoprivreda, šumarstvo i ribolov                     907      888           925        102,0        104,2         1.394    1.356     1.420      101,9    104,7
B   Vađenje ruda i kamena                                  913      919           839         91,9         91,3         1.395    1.406     1.297       93,0     92,2
C   Prerađivačka industrija                                769      764           775        100,8        101,4         1.176    1.169     1.187      100,9    101,5
D   Proizvodnja i snabdijevanje                          1.574    1.570         1.647        104,6        104,9         2.459    2.455     2.579      104,9    105,1
    električnom energijom, plinom,
    parom i klimatizacija

Я использую этот код:

df = pd.read_fwf(io.StringIO(t), header=None, skiprows=1)

И я получаю вывод, который мне нужно очистить... Например, я получаю столбец D, разделенный на три столбца:

D   Proizvodnja i snabdijevanje     1.574   1.570 1.647     104,6   104,9   2.459   2.455 2.579     104,9   105,1
13  NaN     električnom energijom, plinom,  NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
14  NaN     parom i klimatizacija   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN

D это не столбец....? объясните/покажите, что вы хотите..

Frenchy 06.03.2019 17:39

Извините, я имею в виду ряд.

ahmedt 06.03.2019 18:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
439
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема только с D-строкой, текст которой разбит на 3 строки? Если это так, вы можете сделать:

s = """
    0 2017   IX 2018       X 2018       X 2018       X 2018        0 2017   IX 2018   X 2018    X 2018   X 2018
                                                                                             0 2017       IX 2018                                    0 2017   IX 2018

    UKUPNO                                               1.053    1.075         1.093        103,8        101,7         1.633    1.669     1.701      104,2    101,9
A   Poljoprivreda, šumarstvo i ribolov                     907      888           925        102,0        104,2         1.394    1.356     1.420      101,9    104,7
B   Vađenje ruda i kamena                                  913      919           839         91,9         91,3         1.395    1.406     1.297       93,0     92,2
C   Prerađivačka industrija                                769      764           775        100,8        101,4         1.176    1.169     1.187      100,9    101,5
D   Proizvodnja i snabdijevanje                          1.574    1.570         1.647        104,6        104,9         2.459    2.455     2.579      104,9    105,1
    električnom energijom, plinom,
    parom i klimatizacija
"""

df = pd.read_fwf(pd.compat.StringIO(s), header=None, skiprows=5)

df[0] = df[0].ffill()
df[1] = df[0].map(df[1].groupby(df[0]).agg(lambda x: ' '.join(x)))
df = df.dropna(axis=0)
df

Выход:

    0   1   2   3   4   5   6   7   8   9   10  11
0   A   Poljoprivreda, šumarstvo i ribolov  907.000 888.00  925.000 102,0   104,2   1.394   1.356   1.420   101,9   104,7
1   B   Vađenje ruda i kamena   913.000 919.00  839.000 91,9    91,3    1.395   1.406   1.297   93,0    92,2
2   C   Prerađivačka industrija 769.000 764.00  775.000 100,8   101,4   1.176   1.169   1.187   100,9   101,5
3   D   Proizvodnja i snabdijevanje električnom energi...   1.574   1.57    1.647   104,6   104,9   2.459   2.455   2.579   104,9   105,1

Да, я хочу именно так. Но я хочу включить число выше: 0 2017 IX 2018 X 2018 .......

ahmedt 06.03.2019 18:45

Можете ли вы уточнить, пожалуйста, укажите, как? Есть 2 строки с этими числами, и по крайней мере первая строка не выглядит выровненной с остальной частью файла.

perl 06.03.2019 18:50

Эти числа - мои столбцы... Я хочу включить их в свою таблицу.

ahmedt 06.03.2019 19:09

Хорошо, но если вы хотите использовать их в качестве заголовка, они должны быть выровнены с остальной частью таблицы. Например. какой колонке соответствует "IX 2018"? Справа внизу нет столбца

perl 06.03.2019 19:12

Это нормально, но тогда вам нужно сначала переформатировать файл, поставить «IX 2018» выше 1.053 и т. д., чтобы мы могли использовать его в качестве заголовка.

perl 06.03.2019 19:52

Другие вопросы по теме