Как печатать горизонтально, панды (One-Hot-Encoding) - PullRequest
0 голосов
/ 15 апреля 2019

Я хотел бы изменить формат моего сценария с горячим кодированием панд.Я хочу изменить его с печати вывода по вертикали с тремя индексами на печать по горизонтали с одним индексом.Код и вывод внизу.И если это вообще возможно, я бы хотел, чтобы пробелы между столбцами разделяли их.

Code:

from random import randint
import pandas_datareader.data as web
import pandas as pd
import datetime 
import itertools as it
import numpy as np
import csv

df = pd.read_csv('Filename')
df.columns = ['Date','b1','b2','b3']
df = df.set_index('Date')

reversed_df = df.iloc[::-1]

BallOne = pd.get_dummies(reversed_df.b1[:5])
BallTwo = pd.get_dummies(reversed_df.b2[:5])
BallThree = pd.get_dummies(reversed_df.b3[:5])
print(BallOne,("\n"))
print(BallTwo,("\n"))
print(BallThree,("\n"))

Output:
            2  5  6  8
Date                  
1996-12-16  0  0  1  0
1996-12-17  0  0  0  1
1996-12-18  0  1  0  0
1996-12-19  1  0  0  0
1996-12-20  0  0  1  0 

            3  5  8  9
Date                  
1996-12-16  0  1  0  0
1996-12-17  0  0  0  1
1996-12-18  0  1  0  0
1996-12-19  1  0  0  0
1996-12-20  0  0  1  0 

            1  5  7  9
Date                  
1996-12-16  0  0  0  1
1996-12-17  1  0  0  0
1996-12-18  0  0  1  0
1996-12-19  0  1  0  0
1996-12-20  0  0  0  1

Измените вывод следующим образом:

            2  5  6  8        3  5  8  9        1  5  7  9 
Date                  
1996-12-16  0  0  1  0        0  1  0  0        0  0  0  1 
1996-12-17  0  0  0  1        0  0  0  1        1  0  0  0 
1996-12-18  0  1  0  0        0  1  0  0        0  0  1  0 
1996-12-19  1  0  0  0        1  0  0  0        0  1  0  0 
1996-12-20  0  0  1  0        0  0  1  0        0  0  0  1

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете использовать pandas.concat() здесь.

import pandas as pd

df_1 = pd.DataFrame({1: [0, 1, 0, 1, 0], 7: [0, 1, 0, 0 , 0]}, index = pd.date_range('2019-01-01', '2019-01-05'))

df_2 = pd.DataFrame({2: [0, 1, 1, 1, 0], 7: [0, 1, 1, 1 , 1]}, index = pd.date_range('2019-01-01', '2019-01-05'))

print(pd.concat([df_1, df_2], axis = 1))

Дает:

            1  7  2  7
2019-01-01  0  0  0  0
2019-01-02  1  1  1  1
2019-01-03  0  0  1  1
2019-01-04  1  0  1  1
2019-01-05  0  0  0  1

С предоставленными вами данными есть несколько повторяющихся меток столбцов.Одним из способов решения этой проблемы является использование keys.

print(pd.concat([df_1, df_2], keys = ['df_1', 'df_2'], axis = 1))

Дает:

           df_1    df_2   
              1  7    2  7
2019-01-01    0  0    0  0
2019-01-02    1  1    1  1
2019-01-03    0  0    1  1
2019-01-04    1  0    1  1
2019-01-05    0  0    0  1
...