我有以下内容DataFrame
:
dates = pd.date_range('20150101', periods=4)
df = pd.DataFrame({'A' : [5,10,3,4]}, index = dates)
df.loc[:,'B'] = 0
df.loc[:,'C'] = 0
df.iloc[0,1] = 10
df.iloc[0,2] = 3
print df
Out[69]:
A B C
2015-01-01 5 10 3
2015-01-02 10 0 0
2015-01-03 3 0 0
2015-01-04 4 0 0
Run Code Online (Sandbox Code Playgroud)
我要实现对列下面的逻辑B
和C
:
B(k+1) = B(k) - A(k+1)
C(k+1) = B(k) + A(k+1)
我可以使用以下代码执行此操作:
for i in range (1, df.shape[0]):
df.iloc[i,1] = df.iloc[i-1,1] - df.iloc[i,0]
df.iloc[i,2] = df.iloc[i-1,1] + …
Run Code Online (Sandbox Code Playgroud) 我有一个图,其中每个节点都有一个由 (x,y) 给定的空间位置,并且仅当每个节点之间的欧几里得距离为sqrt(2)或更小时,节点之间的边才会连接。这是我的例子:
import networkx
G=nx.Graph()
G.add_node(1,pos=(1,1))
G.add_node(2,pos=(2,2))
G.add_node(3,pos=(1,2))
G.add_node(4,pos=(1,4))
G.add_node(5,pos=(2,5))
G.add_node(6,pos=(4,2))
G.add_node(7,pos=(5,2))
G.add_node(8,pos=(5,3))
# Connect component one
G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,3)
# Connect component two
G.add_edge(6,7)
# Connect component three
G.add_edge(6,8)
G.add_edge(7,8)
G.add_edge(4,5)
pos=nx.get_node_attributes(G,'pos')
nx.draw(G,pos)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何确定附加节点的最佳位置和数量,以便连接图形组件,同时确保任何附加节点始终位于现有节点的sqrt(2)内?
我有几个半小时的数据。它的形式是:
05/10/2017 00:00:00, 116.297
05/10/2017 00:30:00, 7.3748
05/10/2017 01:00:00, -94.8402
05/10/2017 01:30:00, 41.0546
05/10/2017 02:00:00, 206.3658
05/10/2017 02:30:00, -283.0569
05/10/2017 03:00:00, -656.2
05/10/2017 03:30:00, 631.2834
Run Code Online (Sandbox Code Playgroud)
我想对接下来的 24 小时(即 48 个半小时)进行预测。我的代码似乎给出了比这更长的预测。见情节:
这里是:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet
# Load data
file_name = "test_data.csv"
df = pd.read_csv(file_name,parse_dates=[0])
#Fit the model
m = Prophet().fit(df)
#Make predictions
future = m.make_future_dataframe(periods=48, freq=H)
fcst = m.predict(future)
m.plot(fcst)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我没有make_future_dataframe
正确设置方法吗?
我有两个空间特征:
library(sf)
points1 <- data.frame(foo = seq(15, 75, 15),
long = c(-85, -80, -78, -75, -82),
lat = c(34, 36, 37, 38, 35)) %>%
st_as_sf(coords = c('long', 'lat'), crs = 4326)
points2 <- data.frame(bar = seq(15, 75, 15),
long = c(85, 80, 78, 75, 82),
lat = c(30, 32, 34, 36, 38)) %>%
st_as_sf(coords = c('long', 'lat'), crs = 4326)
cbind(points1, points2) -> df
Run Code Online (Sandbox Code Playgroud)
这给出:
foo bar geometry geometry.1
1 15 15 POINT (-85 34) POINT (85 30)
2 30 …
Run Code Online (Sandbox Code Playgroud) 我是 Python 新手,试图找出使用列表理解将 JSON 对象的值解析为数组的最佳方法。
这是我的代码 - 我正在查询公开可用的 iNaturalist API,并希望获取它返回的 JSON 对象,以便我将 JSON 对象的特定部分放入凹凸数组中:
import json
import urllib2
#Set Observations URL request for Resplendent Quetzal of Costa Rica
query = urllib2.urlopen("http://api.inaturalist.org/v1/observations?place_id=6924&taxon_id=20856&per_page=200&order=desc&order_by=created_at")
obSet = json.load(query)
#Print out Lat Long of observation
n = obSet['total_results']
for i in range(n) :
print obSet['results'][i]['location']
Run Code Online (Sandbox Code Playgroud)
这一切都工作正常并给出以下输出:
9.5142456535,-83.8011438905
10.2335478381,-84.8517773638
10.3358965682,-84.9964271008
10.3744851815,-84.9871494128
10.2468720343,-84.9298072822
...
Run Code Online (Sandbox Code Playgroud)
接下来我想做的是将 for 循环替换为列表理解,并将位置值存储在元组中。我正在努力解决语法问题,因为我猜它是这样的:
[(long,lat) for i in range(n) for (long,lat) in obSet['results'][i]['location']]
Run Code Online (Sandbox Code Playgroud)
但这不起作用...感谢您的帮助。
因此,给出以下单列数据框:
from pandas import DataFrame
df = DataFrame({0: {'10/10/2012': 50, '10/11/2012': -10, '10/12/2012': 100})
In [3]: df
Out[3]:
0
10/10/2012 50
10/11/2012 -10
10/12/2012 100
Run Code Online (Sandbox Code Playgroud)
我想为给定列创建累积和,但给累加器一个初始值。因此,对于上面的数据帧,初始值为 100,这将如下所示:
0 1
10/10/2012 50 150
10/11/2012 -10 140
10/12/2012 100 240
Run Code Online (Sandbox Code Playgroud)
任何帮助,非常感谢。
这是我的数组:
import numpy as np
a = np.array([0, 5.0, 0, 5.0, 5.0])
Run Code Online (Sandbox Code Playgroud)
是否可以通过numpy.where
某种方式x
为所有a
小于的值增加一个值l
?
所以像这样:
a = a[np.where(a < 5).add(2.5)]
Run Code Online (Sandbox Code Playgroud)
应该返回:
array([2.5, 5.0, 2.5, 5.0, 5.0])
Run Code Online (Sandbox Code Playgroud) 我有一个元组列表:
myList = [(1,1000), (2,2000), (3,3000),(4,4000]
Run Code Online (Sandbox Code Playgroud)
我想处理这个列表,以便每个元组的第一个元素保持不变,第二个元素是累积元素.所以对于上面的myList,它看起来像这样:
[(1,1000),(2,3000),(3,6000),(4,10000)]
Run Code Online (Sandbox Code Playgroud)
我已经尝试编写一个使用scanl1
但不会编译的函数:
myFunction myList = scanl1 f l
where f = (\acc (x,y) -> (x, acc + y))
Run Code Online (Sandbox Code Playgroud)
任何帮助,非常感谢
我有一个简单的GenServer
内容,我希望创建一个每两秒调用一次函数的循环:
defmodule MyModule do
use GenServer
def start_link(time) do
GenServer.start_link(__MODULE__,time)
end
#Start loop
def init(time) do
{:ok, myLoop(time)}
end
#Loop every two seconds
def myLoop(time) do
foo = bah(:someOtherProcess, {time})
IO.puts("The function value was: #{foo}")
:timer.sleep(2000)
myLoop(time + 2)
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我打电话给:
{:ok, myServer} =MyModule.start_link(time)
IO.puts("Now I can carry on...")
Run Code Online (Sandbox Code Playgroud)
我从来没有看到上述电话的回复.我觉得这很明显.所以我的问题是,如何在不阻止下游执行任务的过程的情况下创建我想要的循环?
谢谢.
我有两个数据框:
df1 <- data.frame(A = c(1, 2, 3), B = c(0,0,3), C = c(3,2,1))
df2 <- data.frame(A = c(0, 2, 4), B = c(1,0,3), C = c(0,1,4))
Run Code Online (Sandbox Code Playgroud)
我想通过在df1
和df2
之间应用一些条件逻辑,通过比较等效命名的列之间的条目来生成第三个数据框。所以逻辑是:
df1$A == 0 and df2$A>0 ~ df3$A = "colonised"
df1$A < df2$A and df1$A != 0 ~ df3$A = "increased"
df1$A == df2$A and df1$A >0 ~ df3$A = "stable"
df1$A > df2$A and df2$A != 0 ~ df3$A = "decreased"
df1$A>0 and df2$A == 0 ~ df3$A …
Run Code Online (Sandbox Code Playgroud)