从给定的JSON记录列表创建/操作数据帧时出现问题

2024-03-28 15:48:19 发布

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

我在json\u数据文件中有json记录。我使用pd.DataFrame(json_data)创建了一个新表pd_json_data,使用这些记录

pandas table pd_json_data

我想操作pd_json_data返回一个带有主键(url,hour)的新表,然后更新一个包含布尔值的列

小时基于检查次数。例如,如果检查数在第0行包含378,则新表应在小时中包含1到378的数字,如果小时中的数字是阳性检查中的数字,则更新中的True

我该怎么做


Tags: jsonurldataframepandasdata数据文件记录table
1条回答
网友
1楼 · 发布于 2024-03-28 15:48:19

更新答案

制造假数据

df = pd.DataFrame({'number of checks': [5, 10, 300, 8], 
                   'positive checks':[[1,3,10], [10,11], [9,200], [1,8,7]], 
                   'url': ['a', 'b', 'c', 'd']})

输出

   number of checks positive checks url
0                 5      [1, 3, 10]   a
1                10        [10, 11]   b
2               300        [9, 200]   c
3                 8       [1, 8, 7]   d

迭代并创建新的数据帧,然后连接

dfs = []
for i, row in df.iterrows():
    hour =  np.arange(1, row['number of checks'] + 1)
    df_cur = pd.DataFrame({'hour' : hour,
                          'url': row['url'],
                          'updated': np.in1d(hour, row['positive checks'])})
    dfs.append(df_cur)
df_final = pd.concat(dfs)

    hour updated url
0       1    True   a
1       2   False   a
2       3    True   a
3       4   False   a
4       5   False   a
0       1   False   b
1       2   False   b
2       3   False   b
3       4   False   b
4       5   False   b
5       6   False   b
6       7   False   b
7       8   False   b
8       9   False   b
9      10    True   b
0       1   False   c
1       2   False   c

旧答案

现在构建新的数据帧

df1 = df[['url']].copy()
df1['hour'] = df['number of checks'].map(lambda x: list(range(1, x + 1)))
df1['updated'] = df.apply(lambda x: x['number of checks'] in x['positive checks'], axis=1)

输出

  url                                            hour updated
0   a                                 [1, 2, 3, 4, 5]   False
1   b                 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]    True
2   c  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...   False
3   d                        [1, 2, 3, 4, 5, 6, 7, 8]    True

相关问题 更多 >