【发布时间】:2016-11-25 12:38:00
【问题描述】:
在 Python2 中连接两个具有不同类型字符串的数据帧时遇到问题。一个有普通的 Py2 字符串,另一个是 unicode 字符串。串联有效,但 numpy 数组内部的类型在内部保持不变(我确定按照设计)。
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)
如您所见,数组现在是“混合”的,它包含字符串和 unicode。有没有办法强制它类型转换为一个或另一个?如果没有,是否有一种简单的方法来检查一侧是否为 unicode,并将该列转换为 str 或 unicode?
(我很在意,因为 pd.lib.infer_dtype 会将这个 numpy 数组的 dtype 标记为“混合”,我需要将其标记为“字符串”或“Unicode”,以将其与其他对象区分开来存储在 Pandas/Numpy 数组中)
【问题讨论】:
标签: python python-2.7 numpy pandas unicode