Добавьте два столбца в один и разделите их пустой строкой pandas - PullRequest
2 голосов
/ 04 мая 2020

Мне нужно добавить два столбца в один и отделить их пустой строкой

это текущий код (вдохновлено этим вопросом ):

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
df['col']=df['Column 1'].append(df['Column 2']).reset_index(drop=True)
print(df) 

выход:

  Column 1 Column 2 Column 3 col
0        A        E        I   A
1        B        F        J   B
2        C        G        K   C
3        D        H        L   D

желаемый выход:

  Column 1 Column 2 Column 3 col
0        A        E        I   A
1        B        F        J   B
2        C        G        K   C
3        D        H        L   D
4      nan      nan      nan nan
5      nan      nan      nan   E
6      nan      nan      nan   F
7      nan      nan      nan   G
8      nan      nan      nan   H

это выполнимо?

Ответы [ 3 ]

4 голосов
/ 04 мая 2020

Моя идея - использовать pandas.concat:

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
col = df['Column 1'].append(pd.Series(float('nan'))).append(df['Column 2']).reset_index(drop=True)

df = pd.concat([df, col], axis=1)

print(df)

  Column 1 Column 2 Column 3    0
0        A        E        I    A
1        B        F        J    B
2        C        G        K    C
3        D        H        L    D
4      NaN      NaN      NaN  NaN
5      NaN      NaN      NaN    E
6      NaN      NaN      NaN    F
7      NaN      NaN      NaN    G
8      NaN      NaN      NaN    H
3 голосов
/ 04 мая 2020

Да, это можно сделать

df['col']=df['Column 1']
df=df.append(pd.DataFrame({'Column 2':[np.nan]}).append(df[['Column 2']]).rename(columns={'Column 2':'col'})).reset_index(drop=True)

df
Out[127]: 
  Column 1 Column 2 Column 3  col
0        A        E        I    A
1        B        F        J    B
2        C        G        K    C
3        D        H        L    D
4      NaN      NaN      NaN  NaN
5      NaN      NaN      NaN    E
6      NaN      NaN      NaN    F
7      NaN      NaN      NaN    G
8      NaN      NaN      NaN    H
1 голос
/ 04 мая 2020

Нам нужно создать Series из двух столбцов, а затем использовать правое объединение, чтобы добавить столбец вместе с дополнительными значениями в фрейм данных.

Использовать right объединение следующим образом :

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
col=df['Column 1'].append(Series(np.nan)).append(df['Column 2']).reset_index(drop=True)
col.name='col'
df = df.join(col, how='right')
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...