在熊猫数据框中选择对象类型单元格的子集

时间:2020-04-11 14:37:21

标签: python string pandas subset cell

我尝试使用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"}
...

2 个答案:

答案 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)