【问题标题】:how to extract a specific field?如何提取特定字段?
【发布时间】:2020-11-19 13:05:03
【问题描述】:

我有一个如下的数据框

pd.DataFrame({'normalvar':1, 'weirdo': [{'Item': [{'basket': 'Text', 'Value': 'Stackoverflow'}]}]})

    
Out[68]: 
   normalvar                                                    weirdo
0          1  {'Item': [{'basket': 'Text', 'Value': 'Stackoverflow'}]}

变量weirdo来自一些解析的json材料。

我想创建一个列myextraction,其中只包含Value 的值(尽可能):即Stackoverflow

我该怎么做? 谢谢!

【问题讨论】:

  • 你的数据框是由几行组成的吗?并且奇怪的列表中总是至少有一本字典吗?字典中是否总是有键值?
  • 是的,很多行。但值可能会丢失

标签: python json pandas


【解决方案1】:
>>> df['myextraction'] = df['weirdo'][0]['Item'][0]['Value']
        
>>> df
        
   normalvar                                             weirdo   myextraction
0          1  {'Item': [{'basket': 'Text', 'Value': 'Stackov...  Stackoverflow

【讨论】:

  • 抱歉,这个变量有点嵌套。示例更新...
【解决方案2】:

试试:

df['myextraction'] = pd.DataFrame.from_records(np.array(df.weirdo.values.tolist()).ravel(),
                                               index=df.index)['Value']

输出:

       normalvar                                         weirdo   myextraction
Item           1  [{'basket': 'one', 'Value': 'Stackoverflow'}]  Stackoverflow
Item2          1             [{'basket': 'two', 'Value': 'SO'}]             SO

【讨论】:

  • 抱歉,这个变量有点嵌套。示例更新...
猜你喜欢
  • 2011-07-03
  • 2019-06-21
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多