如果列包含di,则查找列名

2024-05-29 10:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个json文件读入pandas,想知道是否有办法知道哪些列(如果有的话)包含字典。你知道吗

以下是我的json:

{

"employeeId":"**********",
"targetDateTime":"2019-03-24T21:55:48Z",
"balances":[
    {
        "balanceId":"Vacation",
        "encumberedMinutes":4728,
        "projectedMinutes":4728,
        "vestedMinutes":4728,
        "timeUnitMetaData":{
            "hoursPerDay":8,
            "timeUnit":"HOURS"
        }
    },
    {
        "balanceId":"Unpaid Time",
        "encumberedMinutes":1950,
        "projectedMinutes":1950,
        "vestedMinutes":3210,
        "timeUnitMetaData":{
            "hoursPerDay":8,
            "timeUnit":"HOURS"
        }
    },
    {
        "balanceId":"Personal Time Off",
        "encumberedMinutes":1693,
        "projectedMinutes":600,
        "vestedMinutes":1693,
        "timeUnitMetaData":{
            "hoursPerDay":8,
            "timeUnit":"HOURS"
        }
    }
]

}

import pandas as pd
from pandas.io.json import json_normalize


df = pd.read_json("testing.json", convert_dates=["targetDateTime"])

找到包含dict的列名,并设置一个变量以将其输入json normalize。你知道吗

# Convert column of dicts to df
df_dict = pd.io.json.json_normalize(df["balances"], errors="ignore")

# Merge data frames on index
merged_df = pd.merge(df, df_dict, left_index=True, right_index=True)

# Drop columns
merged_df = merged_df[merged_df.columns.drop(list(merged_df.filter(regex="timeUnitMetaData|balances")))]

print(merged_df)


Tags: jsonpandasdfmergedpdbalancesnormalizehours

热门问题