У меня возникают проблемы при объединении двух фреймов данных с различными типами строк в Python2. У одного есть нормальные строки Py2, а другая - строка юникода. Конкатенация работает, но типы внутри массивов numpy остаются неизменными (по дизайну я уверен).Как объединить DataFrame со строкой в DataFrame с Unicode и нормализовать тип данных
import pandas as pd
from pandas import DataFrame, MultiIndex
from datetime import datetime as dt
df = DataFrame(data={'data': ['A', 'BBB', 'CC']},
index=MultiIndex.from_tuples([(dt(2016, 1, 1), 2),
(dt(2016, 1, 1), 3),
(dt(2016, 1, 2), 2)],
names=['date', 'id']))
df2 = DataFrame(data={'data': [u'AAAAAAA']},
index=MultiIndex.from_tuples([(dt(2016, 1, 2), 4)],
names=['date', 'id']))
df3 = pd.concat([df, df2])
выход:
>>> df.data.values
array(['A', 'BBB', 'CC'], dtype=object)
>>> df2.data.values
array([u'AAAAAAA'], dtype=object)
>>> df3.data.values
array(['A', 'BBB', 'CC', u'AAAAAAA'], dtype=object)
Как вы можете видеть, массив теперь 'смешанные', то есть строки и Юникода. Есть ли способ заставить его привести к тому или иному типу? Если нет, есть ли простой способ проверить, является ли одна сторона юникодом или нет, и преобразовать этот столбец в str или unicode?
(меня волнует, потому что pd.lib.infer_dtype будет отмечать dtype этого массива numpy как «смешанный», и мне нужно, чтобы он был помечен как «строка» или «unicode», чтобы отличать его от других объектов, сохраняются в массивах Pandas/Numpy)
Жаль, что я мог бы принять оба ответа! Они оба работают, но другой ответ лучше для моего конкретного случая использования. Благодаря! – Bryant