我尝试使用str.split(pat =“'”)
选择对象类型列单元格的子集。dataset['pictures'].str.split(pat=",")
我想获取数字40092和39097的值以及图片的两个日期作为两列ID和DATE,但是结果我得到了由NaN组成的一列。
'pictures' column:
{"col1":"40092","picture_date":"2017-11-06"}
{"col1":"39097","picture_date":"2017-10-31"}
...
答案 0 :(得分:0)
这是我从您的问题中了解的信息:
您有一个熊猫数据框,其中的一列包含json字符串(或需要解析为多列的任何其他字符串)
例如
master
您想将两个元素(“ col1”和“ picture_date”)解析为两个单独的列,以进行进一步处理(或者可能只是其中之一)
定义用于解析行的函数:
df = pd.DataFrame({'pictures': [
'{"col1":"40092","picture_date":"2017-11-06"}',
'{"col1":"39097","picture_date":"2017-10-31"}']
})
并按如下所示使用熊猫import json
def parse_row(r):
j=json.loads(r['pictures'])
return j['col1'],j['picture_date']
方法
DataFrame.apply()
结果是一个具有两列的新数据框-每列包含已解析的数据:
df1=df.apply(parse_row, axis=1,result_type='expand')
如果只需要一列,则可以从parse_row返回单个元素(而不是上面的示例中的两个元素元组),只需使用 0 1
0 40092 2017-11-06
1 39097 2017-10-31
。
如果这些值不是json格式,则只需相应地修改df.apply(parse_row)
(拆分,将字符串转换为数字等)
答案 1 :(得分:0)
感谢您的答复,但我通过将数据集中的“图片”列加载到列表中来解决了该问题:
picturelist= dataset['pictures'].values.tolist()
然后创建由列图片制成的列表的数据框,并将其与没有图片列的原始数据集合并
two_new_columns = pd.Dataframe(picturelist)
new_dataset = pd.concat(dataset, two_new_columns)