从 python 数据帧中提取值[特定于问题陈述]

数据挖掘 Python 熊猫 数据框
2022-03-06 13:13:51

这是我的一个朋友的旧帖子之一的更新(由于我的问题得到了部分解决方案,该帖子停止收到回复),我正在修改该问题陈述。链接到该帖子:编码问题 - 从列中提取值并形成新数据框[编辑]

从“每小时”列条目中提取天气参数时,它仅提取特定天气参数的第一个值。“每小时”列中的每个条目都是天气参数列表。每个参数有 24 个不同的值,表示一天中 24 小时的天气参数值。因此,我使用的代码在新数据框中为我提供了 31 个不同的条目,而 1 月份应该是 31*24 个条目。你们能帮帮我吗?

此处提供了笔记本链接(已编辑)

此处提供数据集链接

[代码]

import json
from pprint import pprint 
import pandas as pd

with open(r'C:\Users\Murali\Desktop\Downloads\2016-1.json') as f:
    s = f.read()
jansixteen = json.loads(s)
#print(jansixteen)

a  =jansixteen['data']['weather']
b = ((pd.DataFrame(a)))
b.head()

def extract_col_as_df(df, column_name):
    data = [datum[0] for datum in df[column_name]]
    df = pd.DataFrame(data = data)
    return df
df_hourly = extract_col_as_df(b, 'hourly')
    print(df_hourly)

df_hourly.drop(['FeelsLikeF', 'HeatIndexF','HeatIndexC','weatherIconUrl','WindGustMiles','weatherDesc','weatherCode'], axis=1)
1个回答

您的代码的问题在于,它将数字视为列名,即 0、1、2、3 等,最多 31 行和 24 小时列,但您必须遍历存储为的每个列名值字典所以你需要两个循环:

  1. 这会循环并创建一个新列表,该列表存储 json 的每个属性
  2. 这会将属性添加到 DataFrame 现在在此数据框中执行您的操作,您可能会得到答案

已编辑 ipython 笔记本的 Google Drive 共享位置