小编Cle*_*leb的帖子

如何将不同的函数应用于groupby对象?

我有这样的数据帧:

import pandas as pd

df = pd.DataFrame({'id': [1, 2, 1, 1, 2, 1, 2, 2],
               'min_max': ['max_val', 'max_val', 'min_val', 'min_val', 'max_val', 'max_val', 'min_val', 'min_val'],
               'value': [1, 20, 20, 10, 12, 3, -10, -5 ]})

   id  min_max  value
0   1  max_val      1
1   2  max_val     20
2   1  min_val     20
3   1  min_val     10
4   2  max_val     12
5   1  max_val      3
6   2  min_val    -10
7   2  min_val     -5
Run Code Online (Sandbox Code Playgroud)

每个id都有几个与之相关的最大值和最小值.我想要的输出如下:

    max  min
id          
1     3 …
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas

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

如果所有值都等于字符串值,则删除列

假设我有一个像这样的数据框df

Date      Time Black Carbon Carbon monoxide  PM10                    Particulate matter
0  19/10/2015  01:00:00      No data         No data                 No data   
1  19/10/2015  02:00:00      No data         No data                 No data   
2  19/10/2015  03:00:00      10              No data                 No data   
3  19/10/2015  04:00:00      No data         11 .                    No data   
4  19/10/2015  05:00:00      No data         No data                 No data 
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式删除所有 na 列:

tmp_df= df.dropna(axis=1,how='all')
Run Code Online (Sandbox Code Playgroud)

但是,我希望删除一列,条件是每行都包含一个字符串,No data

在这种情况下,我们将删除该Particulate matter

python dataframe pandas

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

如何使用具有时间相关变量的scipy.integrate.odeint求解ODE系统

我正在使用scipy食谱中的Zombie Apocalypse 示例,以了解有关使用python解决ODE系统的信息。

在此模型中,有一个方程式可以根据出生率,死亡率和初始人口提供每天的人口。然后根据人口数量,计算出有多少僵尸被制造和杀死。

我有兴趣用一系列可以告诉我们每个时间步长人口的数据列表来代替人口微分方程。我收到以下错误:

TypeError: can't multiply sequence by non-int of type 'float'
Run Code Online (Sandbox Code Playgroud)

正如人们指出的那样,这是因为将单个数字乘以列表没有意义。我不确定如何在每次T时从列表中为微分方程提供数字。

这是两次尝试的代码

# solve the system dy/dt = f(y, t)
def f(y, t):
    Si = [345, 299, 933, 444, 265, 322] # replaced an equation with list
    Zi = y[0]
    Ri = y[1]
    # the model equations (see Munz et al. 2009)
    f0 = B*Si*Zi + G*Ri - A*Si*Zi
    f1 = d*Si + A*Si*Zi - G*Ri
    return [f0, f1]
Run Code Online (Sandbox Code Playgroud)

我也尝试过

numbers = [345, 299, 933, …
Run Code Online (Sandbox Code Playgroud)

python scipy ode

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

将行动态添加到 DataFrame

假设我有一个空数据框,已经设置了列,但没有行。我正在从网络上抓取一些数据,所以假设我需要向'2176'空数据框添加索引。当我尝试分配它时,如何自动将此行添加到数据库中?这甚至是熊猫的目的还是我应该使用其他东西?

python dataframe pandas

3
推荐指数
2
解决办法
7366
查看次数

指数曲线拟合将不拟合

当尝试绘制一组数据的指数曲线时:

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import style
from matplotlib import pylab
import numpy as np
from scipy.optimize import curve_fit

x = np.array([30,40,50,60])
y = np.array([0.027679854,0.055639098,0.114814815,0.240740741])

def exponenial_func(x, a, b, c):
    return a*np.exp(-b*x)+c

popt, pcov = curve_fit(exponenial_func, x, y, p0=(1, 1e-6, 1))

xx = np.linspace(10,60,1000)
yy = exponenial_func(xx, *popt)

plt.plot(x,y,'o', xx, yy)
pylab.title('Exponential Fit')
ax = plt.gca()
fig = plt.gcf()

plt.xlabel(r'Temperature, C')
plt.ylabel(r'1/Time, $s^-$$^1$')

plt.show()
Run Code Online (Sandbox Code Playgroud)

上述代码的图表:

拟合数据点的指数曲线。 点击放大。

但是,当我添加数据点20(x) 和0.015162344(y) 时:

import matplotlib
import matplotlib.pyplot …
Run Code Online (Sandbox Code Playgroud)

python curve-fitting scipy

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

如何将列表中的两个大元素相加?

我有一个这样的列表:

[1, 2, 5, 2, 7, 3, 9, 5...]
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法可以在这里找到2个最大元素的总和:

for i in range():
    for j in range():
Run Code Online (Sandbox Code Playgroud)

我发现了这个:"最大的子阵列问题"

但我还没完全明白它的作用.

python algorithm list sub-array

3
推荐指数
2
解决办法
207
查看次数

为什么nansum适用于超出矩阵维度的输入?

我想知道matlab的nansum功能.

当我使用文档中的示例时

X = magic(3);
X([1 6:9]) = repmat(NaN, 1, 5);

X =

   NaN     1   NaN
     3     5   NaN
     4   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

然后打电话

>> nansum(X, 1)

ans =

     7     6     0

>> nansum(X, 2)

ans =

     1
     8
     4
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

但是,我没想到的是它也适用于

>> nansum(X, 400)

ans =

     0     1     0
     3     5     0
     4     0     0
Run Code Online (Sandbox Code Playgroud)

这是什么原因?为什么不会因dim超出矩阵尺寸的误差而崩溃?

indexing matlab dimensions multidimensional-array

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

熊猫corr()经常返回NaN

我试图在数据框上运行我认为应该是简单的相关函数的函数,但是它在我认为不应该的地方返回NaN。

码:

# setup
import pandas as pd
import io

csv = io.StringIO(u'''
id  date    num
A   2018-08-01  99
A   2018-08-02  50
A   2018-08-03  100
A   2018-08-04  100
A   2018-08-05  100
B   2018-07-31  500
B   2018-08-01  100
B   2018-08-02  100
B   2018-08-03  0
B   2018-08-05  100
B   2018-08-06  500
B   2018-08-07  500
B   2018-08-08  100
C   2018-08-01  100
C   2018-08-02  50
C   2018-08-03  100
C   2018-08-06  300
''')

df = pd.read_csv(csv, sep = '\t')

# Format manipulation
df = df[df['num'] …
Run Code Online (Sandbox Code Playgroud)

python statistics correlation dataframe pandas

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

在groupby之后使用数据框列连接另一列的值

我有一个这样的数据框:

import pandas as pd

df = pd.DataFrame(
    {
        'group': list('ABBCA'),
        'values': list('xyztr'),
        'joiner': ['j1', 'j2', 'j2', 'j3', 'j1']
    }
)

  group values joiner
0     A      x     j1
1     B      y     j2
2     B      z     j2
3     C      t     j3
4     A      r     j1
Run Code Online (Sandbox Code Playgroud)

现在,我想对列进行分组,groupvalues使用中的条目来加入相应的值joiner。所以像这样:

df.groupby('group')['values'].transform(" - ".join)

0    x - r
1    y - z
2    y - z
3        t
4    x - r
Run Code Online (Sandbox Code Playgroud)

只是" - "它应该使用中的相应值df['joiner']

我该怎么做? …

python dataframe pandas

3
推荐指数
2
解决办法
87
查看次数

如何检查一列的每个值是否正好映射到另一列中的一个值?

我有一个这样的数据框

import pandas as pd

df = pd.DataFrame({'A':list('bbcddee'), 'B': list('klmnnoi')})

   A  B
0  b  k
1  b  l
2  c  m
3  d  n
4  d  n
5  e  o
6  e  i
Run Code Online (Sandbox Code Playgroud)

我想从列中创建一个字典AB使用例如

dict(zip(df.A, df.B))
Run Code Online (Sandbox Code Playgroud)

在此之前,我想检查一下 in 中的每个值是否A仅映射到 中的一个值B;如果不是,则应抛出错误;上面的情况并非如此,因为b映射到kandl并且e映射到oand i

接近它的一种方法是:

df[df.groupby('A', sort=False)['B'].transform(lambda x: len(set(x))) > 1]
Run Code Online (Sandbox Code Playgroud)

返回

   A  B
0  b  k
1  b  l
5  e  o
6 …
Run Code Online (Sandbox Code Playgroud)

python performance dataframe pandas

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