2014-11-05 320 views
0

我需要創建一個熊貓系列,其中的元素每個都是來自DataFrame的行的函數。具體來說,這是一個'元數據'列,它是一個json字符串,我想要一系列json加上其餘列的字典。理想的情況是我希望的數據框的東西等同於地圖的方法:將熊貓數據框行映射爲熊貓系列

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無線th這個列表的內容:

[{"a":1,"b":2,"timestamp":000000001} 
{"a":1,"c":2,"timestamp":000000002} 
{"a":1,"c":2,"timestamp":000000003}] 
+2

你可以發佈一個小例子集?理想情況下,這將是我們可以複製,然後立即加載'pandas.read_clipboard()'(自己測試以檢查)的東西 – Marius 2014-11-05 00:53:42

回答

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} 
+0

您當然可以玩字符串來產生時間戳的零,我不知道它們是哪個規則應該遵循 – Daniele 2014-11-05 14:13:51

+0

我寧願將一個鍵值映射保存在系列中,但這適用於我的特定情況。謝謝 – fakedrake 2014-11-06 12:05:30