我有一个名为 d0、d1、d2、...d9 的 10 个数据帧的列表。全部都有 3 列和 100 行。
d0.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 0 100 non-null float64
1 1 100 non-null float64
2 2 100 non-null float64
dtypes: float64(3)
memory usage: 2.5 KB
Run Code Online (Sandbox Code Playgroud)
我想合并所有数据框,这样我就可以有 3 列和 1000 行,然后将其转换为数组。
s1=[d0,d1,d2,d3,d4,d5,d6,d7,d8,d9]
s2=pd.concat([s1])
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出错误:
TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid
type(s1)
list
Run Code Online (Sandbox Code Playgroud)
我使用 pandas …
我正在尝试使用 NSGA 2 解决具有 3 个目标和 2 个决策变量的多目标优化问题。下面给出 NSGA2 算法和终止标准的 pymoo 代码。我的 pop_size 是 100,n_offspring 是 100。该算法迭代了 100 代。我想将所有 100 代的每一代中考虑的决策变量的所有 100 个值存储在一个数据框中。
pymoo 代码中的 NSGA2 实现:
from pymoo.algorithms.nsga2 import NSGA2
from pymoo.factory import get_sampling, get_crossover, get_mutation
algorithm = NSGA2(
pop_size=20,
n_offsprings=10,
sampling=get_sampling("real_random"),
crossover=get_crossover("real_sbx", prob=0.9, eta=15),
mutation=get_mutation("real_pm", prob=0.01,eta=20),
eliminate_duplicates=True
)
from pymoo.factory import get_termination
termination = get_termination("n_gen", 100)
from pymoo.optimize import minimize
res = minimize(MyProblem(),
algorithm,
termination,
seed=1,
save_history=True,
verbose=True)
Run Code Online (Sandbox Code Playgroud)
我尝试过的(我的参考:stackoverflow问题):
import pandas as pd
df2 = pd.DataFrame …Run Code Online (Sandbox Code Playgroud) 我正在处理一个包含所有数字类型变量的数据框
summary.default(pfnew)
Run Code Online (Sandbox Code Playgroud)
我想创建一个按迭代器和 CV 分组的数据透视表并汇总 ID 的计数。本质上,我想要数据框中对应于一组特定迭代器和 CV 值的点数。我使用的代码是:
代码
install.packages("tidyr")
install.packages("dplyr")
install.packages("vctrs")
library(vctrs)
library(tidyr)
library(dplyr)
allow_lossy_cast(pivot<-pfnew%>%
select(pfnew$iterator,pfnew$CV,pfnew$ID)%>%
summarise(CT=count(pfnew$ID)))
Run Code Online (Sandbox Code Playgroud)
但正如其他论坛中所讨论的,即使在使用allow_lossy_cast之后,我也收到了相同的错误消息。
错误:必须使用有效的下标向量对列进行子集化。x 由于精度损失,无法从 转换为 。
我们该如何解决这个问题?或者我们可以用其他方式做同样的工作吗?
我有一个数据框 df ,其中包含两个变量,如下所示。使用下面的代码,我想获得矩阵“mat”。
此代码适用于 unique(df$V1)= 3 但对于 unique(df$V1) 为 1000 的操作需要大量时间(> 10 小时)。
数据框
V1 V2
1 60
1 30
1 38
1 46
2 29
2 35
2 13
2 82
3 100
3 72
3 63
3 45
Run Code Online (Sandbox Code Playgroud)
代码:
#Unique V1 values
vec <- unique(df$V1)
#Count <= valies
val <- combn(vec, 2, function(x)
sum(outer(df$V2[df$V1 == x[1]], df$V2[df$V1 == x[2]], `<=`)))
val
#[1] 5 14 13
#Create an empty matrix
mat <- matrix(0,length(vec), length(vec))
#Fill the lower triangle of …Run Code Online (Sandbox Code Playgroud) python ×2
r ×2
combn ×1
dataframe ×1
numpy ×1
optimization ×1
pandas ×1
pivot-table ×1
types ×1