我有这样的数据帧:
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) 假设我有一个像这样的数据框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列
我正在使用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) 假设我有一个空数据框,已经设置了列,但没有行。我正在从网络上抓取一些数据,所以假设我需要向'2176'空数据框添加索引。当我尝试分配它时,如何自动将此行添加到数据库中?这甚至是熊猫的目的还是我应该使用其他东西?
当尝试绘制一组数据的指数曲线时:
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) 我有一个这样的列表:
[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)
我发现了这个:"最大的子阵列问题"
但我还没完全明白它的作用.
我想知道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超出矩阵尺寸的误差而崩溃?
我试图在数据框上运行我认为应该是简单的相关函数的函数,但是它在我认为不应该的地方返回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) 我有一个这样的数据框:
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)
现在,我想对列进行分组,group并values使用中的条目来加入相应的值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']。
我该怎么做? …
我有一个这样的数据框
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)
我想从列中创建一个字典A并B使用例如
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 ×9
dataframe ×6
pandas ×6
scipy ×2
algorithm ×1
correlation ×1
dimensions ×1
group-by ×1
indexing ×1
list ×1
matlab ×1
ode ×1
performance ×1
statistics ×1
sub-array ×1