我需要创建一个pandas系列,其元素都是DataFrame中一行的函数。具体来说,这是一个'元数据'列,它是一个json字符串,我想要一系列的字符串,它们是json加上其余的列。理想情况下,我想要一个与数据帧的map方法等效的东西:
df.map(lambda row: json.loads(row.metadata).update({'timestamp':row.timestamp}))
(更新是破坏性的,不会返回新的词典,但你明白了)
编辑:您可以复制此
metadata timestamp
"{'a':1,'b':2}" 000000001
"{'a':1,'c':2}" 000000002
"{'a':1,'c':2}" 000000003
并加载
In [8]: import pandas as pd
In [9]: pd.read_clipboard()
Out[9]:
metadata timestamp
0 {'a':1,'b':2} 1
1 {'a':1,'c':2} 2
2 {'a':1,'c':2} 3
所需的结果应该是一个pandas.Series包含此列表的内容:
[{"a":1,"b":2,"timestamp":000000001}
{"a":1,"c":2,"timestamp":000000002}
{"a":1,"c":2,"timestamp":000000003}]
答案 0 :(得分:1)
如何修改字符串? 类似的东西:
new_metadata = df.apply(lambda x: '{}\b,"timestamp":{}}}'.format(x.metadata,x.timestamp),axis=1)
产生:
In [1]: new_metadata
Out[2]:
0 {'a':1,'b':2,"timestamp":1}
1 {'a':1,'c':2,"timestamp":2}
2 {'a':1,'c':2,"timestamp":3}