将pandas DataFrame行映射到pandas Series

时间:2014-11-05 00:27:08

标签: python pandas

我需要创建一个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}]

1 个答案:

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