Создание однострочного pandas dataframe - PullRequest
0 голосов
/ 01 июня 2018

У меня есть такой фрейм данных -

                 0
0            a  43
1            b  630
2            r  587
3            i  462
4            g  153
5            t  266

Я хочу создать новый фрейм данных, который выглядит следующим образом -

     a         b     r       i     g        t
0    43       630   587    462    153      266

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Вы можете переместить ваш кадр данных с помощью df.T или df.transpose():

df = pd.DataFrame([['A', 1], ['B', 2], ['C', 3], ['D', 4], ['E', 5]],
                  columns=['col1', 'col2'])

print(df)

  col1  col2
0    A     1
1    B     2
2    C     3
3    D     4
4    E     5

res = df.set_index('col1').T

Результат:

print(res)

col1  A  B  C  D  E
col2  1  2  3  4  5
0 голосов
/ 01 июня 2018

Создать 2d массив по списку с разделением, а затем новый Dataframe по конструктору:

a = np.array([x.split() for x in df['0']])

df = pd.DataFrame([a[:, 1]], columns=a[:, 0])
print (df)
    a    b    r    i    g    t
0  43  630  587  462  153  266
0 голосов
/ 01 июня 2018

Если у вас есть только один столбец с этим форматом a 43, это должно работать:

df.columns = ['col']
df = pd.DataFrame(df.col.str.split(' ',1).tolist(), columns = ['col1','col2']).T.reset_index(drop=True)
df = df.rename(columns=df.iloc[0]).drop(df.index[0])

Ввод:

df = pd.DataFrame(data=[
     ['a 43',],
     ['b 630'],
     ['r 587']],
columns=['col'])

     col
0   a 43
1  b 630
2  r 587

Выход:

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