在Python2中连接两个具有不同类型字符串的数据帧时遇到问题。一个具有普通的Py2字符串,另一个具有unicode字符串。连接工作,但numpy数组内部的类型保持不变(我敢肯定设计)。
android:layout_above="@+id/linear"
输出:
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])
如您所见,数组现在是“混合”的,它有字符串和unicode。有没有办法强迫它对一个或另一个进行类型转换?如果没有,是否有一种简单的方法来检查一方是否是unicode,并将该列转换为str或unicode?
(我关心因为pd.lib.infer_dtype会将这个numpy数组的dtype标记为“mixed”,我需要将它标记为'string'或'unicode',以区别于其他对象,也可以存储在Pandas / Numpy Arrays中)
答案 0 :(得分:3)
Pandas有一个astype方法,但它返回一个系列。这会奏效。
df2_copy = pd.DataFrame(d2.data.astype(str))
df2_copy.data.values
array(['AAAAAAA'], dtype=object)
答案 1 :(得分:1)