Как повернуть Pandas DataFrame на разные значения? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть фрейм данных p:

 p = {'ID': {0: 'A', 1: 'A',  2: 'B', 3: 'B'},
 'col1': {0: 8.0, 1: 237.0, 2: 2.0, 3: 2.0},
 'col2': {0: 15.0, 1: -9.0, 2: 0.0, 3: 5.0},
 'col3': {0: 8.0, 1: 237.0, 2: -1.0, 3: -62.0},
 'col4': {0: -13.0, 1: 94.0, 2: 2.0, 3: 0.0},
 'col5': {0: 8.0, 1: 237.0, 2: 3.0, 3: 3.0},
 'col6': {0: 'car', 1: 'truck', 2: 'car', 3: 'truck'}}
p = pd.DataFrame.from_dict(p)

, и я хочу развернуть или развернуть столбец col6:

p.pivot(columns='col6')

Однако это возвращает кучу 'None' и 'NaN':

    ID  col1    col2    col3    col4    col5
col6    car truck   car truck   car truck   car truck   car truck   car truck
0   A   None    8.0 NaN 15.0    NaN 8.0 NaN -13.0   NaN 8.0 NaN
1   None    A   NaN 237.0   NaN -9.0    NaN 237.0   NaN 94.0    NaN 237.0
2   B   None    2.0 NaN 0.0 NaN -1.0    NaN 2.0 NaN 3.0 NaN
3   None    B   NaN 2.0 NaN 5.0 NaN -62.0   NaN 0.0 NaN 3.0

Мне нужна такая структура таблицы (с заполненными значениями):

ID    car_col1   truck_col1   car_col2    truck_col2
A
B

Таким образом, в каждой строке будет только один уникальный идентификатор.Всегда будет 2 удостоверения личности, по одному на машину / грузовик.

1 Ответ

0 голосов
/ 27 сентября 2019

С учетом следующего ввода:

p = {'ID': {0: 'A', 1: 'A',  2: 'B', 3: 'B'},
 'col1': {0: 8.0, 1: 237.0, 2: 2.0, 3: 2.0},
 'col2': {0: 15.0, 1: -9.0, 2: 0.0, 3: 5.0},
 'col3': {0: 8.0, 1: 237.0, 2: -1.0, 3: -62.0},
 'col4': {0: -13.0, 1: 94.0, 2: 2.0, 3: 0.0},
 'col5': {0: 8.0, 1: 237.0, 2: 3.0, 3: 3.0},
 'col6': {0: 'car', 1: 'truck', 2: 'car', 3: 'truck'}}
df = pd.DataFrame(p)

  ID   col1  col2   col3  col4   col5   col6
0  A    8.0  15.0    8.0 -13.0    8.0    car
1  A  237.0  -9.0  237.0  94.0  237.0  truck
2  B    2.0   0.0   -1.0   2.0    3.0    car
3  B    2.0   5.0  -62.0   0.0    3.0  truck

попробуйте этот код:

df.pivot(index='ID', columns='col6')

и даст:

     col1         col2       col3         col4       col5       
col6  car  truck   car truck  car  truck   car truck  car  truck
ID                                                              
A     8.0  237.0  15.0  -9.0  8.0  237.0 -13.0  94.0  8.0  237.0
B     2.0    2.0   0.0   5.0 -1.0  -62.0   2.0   0.0  3.0    3.0
...