Я створив DataFrame, повну нулів, таких як:
0 1 2
0 0 0 0
1 0 0 0
2 0 0 0
...
n 0 0 0
У мене є список, що містить імена для стовпця в Unicode, такі як:
list = [u"One", u"Two", u"Three"]
DataFrame нулів відомий як a
, і я створюю новий повний DataFrame зі списком як заголовки стовпців через:
final = pd.DataFrame(a, columns=[list])
Однак результуючий DataFrame має імена стовпців, які більше не є unicode (тобто вони не показують тег u "").
Мені цікаво, чому це відбувається. Дякую!
Відповіді:
2 для відповіді № 1Немає жодної причини втратити Юнікод, його можна перевірити:
print df.columns.tolist()
Будь ласка, ніколи не використовуйте резервні слова list
, type
, id
... як змінні, оскільки маскує вбудовані функції. Також необхідно додати values
для перетворення значень у numpy array
:
a = pd.DataFrame(0, columns=range(3), index=range(3))
print (a)
0 1 2
0 0 0 0
1 0 0 0
2 0 0 0
L = [u"One", u"Two", u"Three"]
final = pd.DataFrame(a.values, columns=L)
print (final)
One Two Three
0 0 0 0
1 0 0 0
2 0 0 0
тому що стовпці не вирівнюються і отримують всі NaN
с:
final = pd.DataFrame(a, columns=L)
print (final)
One Two Three
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
Думаю, найпростішим є використання тільки індексу a DataFrame
якщо всі значення є 0
:
L = [u"One", u"Two", u"Three"]
final = pd.DataFrame(0, columns=L, index=a.index)
print (final)
One Two Three
0 0 0 0
1 0 0 0
2 0 0 0