Я пытаюсь прочитать набор данных, полученный из GitHub, и у меня возникают проблемы со столбцами. В наборе данных есть лишняя информация, поэтому я вырезал ее. Когда я создаю новый DataFrame с нужной мне информацией, система не идентифицирует все столбцы. Вместо этого он рассматривает все как один столбец. Кто-нибудь знает, как это исправить, чтобы я мог сделать выходные столбцы DataFrame, 'r', 'G (r)', 'd_r', 'd_Gr'? Ниже мой код и результаты.

import pandas as pd

url = 'https://github.com/jagar2/Summer_2020_MAT-395-495_Scientific-Data-Analysis-and-Computing/blob/master/homeworks/HW1/ALDalumina.gr?raw=true'
df = pd.read_table(url, skiprows=0)

# from here, the desired data is within rows [123:]
print(df.loc[123:] # this shows desired data

# make new DataFrame
df_new = df[123:]


# output

        History written:      Thu Apr 12 20:03:37 2018
123                         #L r    G(r)    d_r    d_Gr
124     1.000000e-002    8.021935e-002   -7.539822e-...
125     2.000000e-002    1.585036e-001   -1.507964e-...
126     3.000000e-002    2.329669e-001   -2.261947e-...
127     4.000000e-002    3.018208e-001   -3.015929e-...
...                                                 ...
2119    1.996000e+001   -4.029393e-002   -1.504949e+...
2120    1.997000e+001   -4.024680e-002   -1.505703e+...
2121    1.998000e+001   -3.973462e-002   -1.506456e+...
2122    1.999000e+001   -3.877427e-002   -1.507210e+...
2123    2.000000e+001   -3.739258e-002   -1.507964e+...

[2001 rows x 1 columns]

Как заставить Python распознавать эти столбцы? Любая помощь приветствуется.

0
mmotts15 16 Июл 2020 в 19:53

1 ответ

Лучший ответ

Данные интерпретируются как содержащие один слегка удлиненный столбец 'History written: Thu Apr 12 20:03:37 2018'.

По сути, вам нужно разделить один столбец на несколько столбцов. Вы можете использовать приведенный ниже код, чтобы получить результат, как описано вами. Создав df_new, вы можете попробовать:

df_final = df_new[1:].assign(r = df_new['History written:      Thu Apr 12 20:03:37 2018'].str.split('\s{3,}').map(lambda x: x[0]), 
              G_r = df_new['History written:      Thu Apr 12 20:03:37 2018'].str.split('\s{3,}').map(lambda x: x[1]), 
              d_r = df_new['History written:      Thu Apr 12 20:03:37 2018'].str.split('\s{3,}').map(lambda x: x[2]), 
              d_Gr = df_new['History written:      Thu Apr 12 20:03:37 2018'].str.split('\s{3,}').map(lambda x: x[3])
             )[['r','G_r','d_r','d_Gr']]

Это даст вам новый фрейм данных df_final с необходимыми 4 столбцами. Вы можете переименовать столбцы по своему усмотрению, используя df_final.rename(columns = your_column_name_dict)

df_final = df_final.rename(columns = {'G_r':'G(r)'})
0
Yati Raj 16 Июл 2020 в 17:52