【发布时间】:2018-07-17 02:37:45
【问题描述】:
import pandas as pd
#Define Dataframe
d = {'cola': ['cola1', 'cola2', 'cola3', 'cola4', 'cola4']
, 'colb': [b'colb1', b'colb2', b'colb3', b'colb4', b'colb4']
, 'colc': ['colc1', 'colc2', 'colc3', 'colc4', 'colc4']
, 'cold': [b'cold1', b'cold2', b'cold3', b'cold4', b'cold4']
}
df = pd.DataFrame(data=d)
#Create flatfile from dataframe
df.to_csv('converted_file.txt', sep='|',index=False)
我想将字节转换为字符串,即在创建输出文件之前删除“b”前缀。
我尝试了这里提到的解决方案:How to translate "bytes" objects into literal strings in pandas Dataframe, Python3.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]
虽然它适用于 [colb] 和 [cold] 列,但 [cola] 和 [colc] 列是空白的。这主要是因为所有 4 列都是对象类型。我不确定如何仅隐式选择列 [colb] 和 [cold] 然后应用解码功能。由于数据帧是从 SQL 查询的输出创建的,因此需要隐式选择这两列进行解码。
有没有人遇到过这种情况并可以提出解决方案?
提前致谢!
【问题讨论】:
标签: python python-3.x pandas