小编Zep*_*hyr的帖子

在熊猫数据框中展平嵌套的 Json

我正在尝试将 json 文件加载到 Pandas 数据框。我发现有一些嵌套的json。下面是示例 json:

{'events': [{'id': 142896214,
   'playerId': 37831,
   'teamId': 3157,
   'matchId': 2214569,
   'matchPeriod': '1H',
   'eventSec': 0.8935539999999946,
   'eventId': 8,
   'eventName': 'Pass',
   'subEventId': 85,
   'subEventName': 'Simple pass',
   'positions': [{'x': 51, 'y': 49}, {'x': 40, 'y': 53}],
   'tags': [{'id': 1801, 'tag': {'label': 'accurate'}}]}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码将 json 加载到数据帧中:

with open('EVENTS.json') as f:
    jsonstr = json.load(f)

df = pd.io.json.json_normalize(jsonstr['events'])
Run Code Online (Sandbox Code Playgroud)

下面是 df.head() 的输出

df 的输出

这是输出

但是我发现了两个嵌套的列,例如位置和标签。

我尝试使用以下代码将其展平:

Position_data = json_normalize(data =jsonstr['events'], record_path='positions', meta = ['x','y','x','y'] )
Run Code Online (Sandbox Code Playgroud)

它向我显示了如下错误:

KeyError: "Try running with errors='ignore' as key 'x' is …
Run Code Online (Sandbox Code Playgroud)

python json flatten pandas json-normalize

14
推荐指数
2
解决办法
2万
查看次数

具有上限的 Scipy 泊松分布

我正在使用 scipy stats 生成一个随机数。我使用了泊松分布。下面是一个例子:

import scipy.stats as sct

A =2.5
Pos = sct.poisson.rvs(A,size = 20)
Run Code Online (Sandbox Code Playgroud)

当我打印 Pos 时,我得到以下数字:

array([1, 3, 2, 3, 1, 2, 1, 2, 2, 3, 6, 0, 0, 4, 0, 1, 1, 3, 1, 5])
Run Code Online (Sandbox Code Playgroud)

从数组中可以看到生成了一些数字,例如6。

我想要限制最大数字(假设是 5),即使用 sct.poisson.rvs 生成的任何随机数都应该等于或小于 5,

我如何调整我的代码来实现它。顺便说一句,我在 Pandas Dataframe 中使用它。

python statistics poisson scipy

7
推荐指数
2
解决办法
2219
查看次数

根据元素的排名对数据框进行排序并创建新列

我有以下数据帧:

import pandas as pd
df = pd.DataFrame(
                  {
                   'id': [1, 1, 1, 1, 2, 2,2, 2, 3, 3, 3, 3],
                   'name': ['A', 'B', 'C', 'D','A', 'B','C', 'D', 'A', 'B','C', 'D'], 
                   'Value': [1, 2, 3, 4, 5, 6, 0, 2, 4, 6, 3, 5]
                  },
                  columns=['name','id','Value'])`
Run Code Online (Sandbox Code Playgroud)

我可以使用id和value对数据进行排序,如下所示:

df.sort_values(['id','Value'],ascending = [True,False])  
Run Code Online (Sandbox Code Playgroud)

我打印的表格将显示如下:

  name   id   Value
    D      1      4
    C      1      3
    B      1      2
    A      1      1
    B      2      6
    A      2      5
    D      2      2
    C      2      0
    B      3 …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas

4
推荐指数
1
解决办法
52
查看次数

熊猫数据框中每一行的随机值

嗨,我有以下数据框:

import numpy as np
import pandas as pd
df = pd.DataFrame()
df['T1'] = ['A','B','C','D','E']
df['T2'] = ['G','H','I','J','K']
df['Match'] = df['T1'] +' Vs '+ df['T2']
Nsims = 5
df1 = pd.DataFrame((pd.np.tile(df,(Nsims,1))))
Run Code Online (Sandbox Code Playgroud)

我通过对五个随机数求和创建了两个新列T1_pointT2_point。当我如下时:它给我所有行相同的数字。

Ninit = 5
df1['T1_point'] = np.sum(np.random.uniform(size=Ninit))
df1['T2_point'] = np.sum(np.random.uniform(size=Ninit))
Run Code Online (Sandbox Code Playgroud)

我想做的是,我想通过使用随机数为每一行获取不同的值。

我该怎么办?

谢谢

齐普

python random dataframe pandas

1
推荐指数
1
解决办法
2955
查看次数