/ / Застосування імен стовпців до pandas DataFrame, імена більше не unicode - python, python-2.7, pandas, unicode

Застосування назв стовпців до pandas DataFrame, імена більше не єдiокодi - python, python-2.7, pandas, unicode

Я створив 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