Python 如何将每行包含Dict的数据帧列解析为独立的数据帧列?
我有以下数据帧:Python 如何将每行包含Dict的数据帧列解析为独立的数据帧列?,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有以下数据帧: TradeDictionary 0 {'id': '545', 'instrument': 'EUR_USD', 'price'... 1 {'id': '539', 'instrument': 'GBP_USD', 'price'... 2 {'id': '535', 'instrument': 'EUR_USD', 'price'... 3 {'id': '529', 'instrument': 'EUR_USD', 'price'... 4 {
TradeDictionary
0 {'id': '545', 'instrument': 'EUR_USD', 'price'...
1 {'id': '539', 'instrument': 'GBP_USD', 'price'...
2 {'id': '535', 'instrument': 'EUR_USD', 'price'...
3 {'id': '529', 'instrument': 'EUR_USD', 'price'...
4 {'id': '523', 'instrument': 'EUR_USD', 'price'...
5 {'id': '501', 'instrument': 'EUR_USD', 'price'...
6 {'id': '495', 'instrument': 'GBP_USD', 'price'...
7 {'id': '489', 'instrument': 'EUR_USD', 'price'...
8 {'id': '483', 'instrument': 'EUR_USD', 'price'...
9 {'id': '477', 'instrument': 'EUR_USD', 'price'...
10 {'id': '471', 'instrument': 'GBP_USD', 'price'...
但是,我需要将其转换为数据帧中的独立列。我在其他帖子中尝试了许多建议,但似乎不喜欢。在
df.apply中使用pd.Series
:
In [1426]: df = pd.DataFrame({'TradeDictionary':[{'id': '545', 'instrument': 'EUR_USD', 'price':100}, {'id': '539', 'instrument': 'GBP_USD', 'price':200}, {'id': '535', 'instrument': 'EUR_USD', 'price':50}]})
In [1427]: df
Out[1427]:
TradeDictionary
0 {'id': '545', 'instrument': 'EUR_USD', 'price'...
1 {'id': '539', 'instrument': 'GBP_USD', 'price'...
2 {'id': '535', 'instrument': 'EUR_USD', 'price'...
In [1429]: df1 = df.TradeDictionary.apply(pd.Series)
In [1430]: df1
Out[1430]:
id instrument price
0 545 EUR_USD 100
1 539 GBP_USD 200
2 535 EUR_USD 50
或为了获得更好的性能,请使用pd.json\u规范化
:
In [1432]: df1 = pd.json_normalize(df.TradeDictionary)
您是否尝试过迭代、解析和连接?您尝试过什么?这是我尝试过的方法之一,但它返回的数据帧与0完全相同,而不是TradeDictionary标题。列的数据类型为Object。它将始终以键的名称作为列名返回数据帧。在新的数据框中,它永远不会返回TradeDictionary
作为列名。是的,我知道,但是数据框只是作为一个列,其中包含字典字符串。可能是因为TradeDictionary
列在df
中不是一个正确的dict
。检查我创建的示例df
。在上面运行代码。查看dict的源代码,我使用的API是高度嵌套的,我已经去掉了不相关的信息,现在上面的代码按预期工作:)