在dataframe(Python 3.6)中将字节隐式转换为字符串
我想将字节转换为字符串,即在创建输出文件之前删除“b”前缀 我尝试了这里提到的解决方案: 虽然它适用于列[colb]和[cold],但列[cola]和[colc]是空白的。这主要是因为所有4列都是object类型。我不知道如何仅隐式选择列[colb]和[cold],然后应用decode函数。需要隐式选择这两列进行解码,因为数据帧是从SQL查询的输出创建的 以前是否有人遇到过这种情况,并能提出解决方案 提前谢谢 演示:在dataframe(Python 3.6)中将字节隐式转换为字符串,python,python-3.x,pandas,Python,Python 3.x,Pandas,我想将字节转换为字符串,即在创建输出文件之前删除“b”前缀 我尝试了这里提到的解决方案: 虽然它适用于列[colb]和[cold],但列[cola]和[colc]是空白的。这主要是因为所有4列都是object类型。我不知道如何仅隐式选择列[colb]和[cold],然后应用decode函数。需要隐式选择这两列进行解码,因为数据帧是从SQL查询的输出创建的 以前是否有人遇到过这种情况,并能提出解决方案 提前谢谢 演示: str_df = df.select_dtypes([np.object])
str_df = df.select_dtypes([np.object])
str_df = str_df.stack().str.decode('utf-8').unstack()
for col in str_df:
df[col] = str_df[col]
谢谢@MaxU的回复!但是,这对我不起作用。我理解代码试图做什么,并且isinstance函数在applymap函数之外工作。我需要导入任何库才能使用applymap吗?再次感谢@MaxU的帮助。当我执行以下操作时,这就起作用了:df=df.applymap(lambda x:x.decode(),如果isinstance(x,bytes)else x)
str_df = df.select_dtypes([np.object])
str_df = str_df.stack().str.decode('utf-8').unstack()
for col in str_df:
df[col] = str_df[col]
In [12]: df
Out[12]:
cola colb colc cold
0 cola1 b'colb1' colc1 b'cold1'
1 cola2 b'colb2' colc2 b'cold2'
2 cola3 b'colb3' colc3 b'cold3'
3 cola4 b'colb4' colc4 b'cold4'
4 cola4 b'colb4' colc4 b'cold4'
In [13]: df.applymap(lambda x: x.decode() if isinstance(x, bytes) else x)
Out[13]:
cola colb colc cold
0 cola1 colb1 colc1 cold1
1 cola2 colb2 colc2 cold2
2 cola3 colb3 colc3 cold3
3 cola4 colb4 colc4 cold4
4 cola4 colb4 colc4 cold4