используя pandas при организации данных моего csv файла - PullRequest
0 голосов
/ 26 марта 2020

У меня есть большой файл Excel, который мне нужно организовать определенным образом (годы климатических данных), чтобы понять мою проблему, я создал этот простой файл Excel для вопросов. Данные выглядят примерно так:

excel data

(в основном это данные 4x4 с пустой строкой между ними), и я хочу преобразовать эти данные так:

excel results

(возьмите каждую строку данных, транспонируйте ее, а затем добавьте к ней вторую строку со значениями Nan), используя pandas.

Проблема, с которой я столкнулся. при чтении файла с использованием file = pd.read_csv("excel data.csv"):

  1. моя первая строка будет определена как заголовок.
  2. строка, разделяющая данные, будет преобразована в NaN и будет перепутал с фактическими NaN в моих данных

Я пробовал разные функции, включая чтение / сохранение файла без индекса (index = False), я также пробовал такие функции, как file.iloc[0].values, file.shift(1), но Я не смог понять это.

Подводя итог, я хочу иметь возможность прочитать файл, используя pandas, а затем сохранить его как 1 столбец, содержащий все данные без дополнительной информации или заголовков (извините но я новичок в pandas).

РЕДАКТИРОВАТЬ: Вот как это выглядит в ноутбуке Jupyter.

data in jupyter

Для первой проблемы header = None работал .

Я пытался file.stack(dropna=False).reset_index()[0], но результаты остались такими же, как на картинке.

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Если вы передадите header = None в функцию read_csv, она не будет определять первую строку в качестве заголовка, т.е. file = pd.read_csv("excel_data.csv", header=None)

Для второй части, как только вы поместите данные в кадр данных, Вы можете попробовать это -

file.stack(dropna=False).reset_index()[0]

Попытка воспроизвести требуемые результаты:

df = pd.DataFrame({0:[5.0,54.0,3.0,9.0], 1:[6.0,12.0,6.0,12.0], 2:[9.0,76.0,np.nan,41.0], 3:[8.0,2.0,12.0,100.0]})
df.loc[4] = ['','','','']
    0   1    2    3
0   5   6    9    8
1  54  12   76    2
2   3   6  NaN   12
3   9  12   41  100
4         

df = df.replace('',np.nan).dropna(how='all') #to remove blank rows
df.stack(dropna=False).reset_index()[0]
0       5.0
1       6.0
2       9.0
3       8.0
4      54.0
5      12.0
6      76.0
7       2.0
8       3.0
9       6.0
10      NaN
11     12.0
12      9.0
13     12.0
14     41.0
15     100.0
0 голосов
/ 26 марта 2020

Интересно, сработает ли pd.read_csv("excel data.csv", skip_blank_lines=True, header=None)?

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