我在运行非等连接(来自 R 的 data.table 库)时发现了奇怪的行为,并且我无法弄清楚为什么会发生这种情况。
为什么在运行非等值连接时,如果我想保留左表的原始值,我需要写入x.colname而不是只写入连接的属性colname内?j
这是我正在谈论的一个可重复的小例子:
library(tidyverse)
library(data.table)
# Setting seed for reproducibility
set.seed(666)
# data.table that contains roadway segments.
# The "frm_dfo" and "to_dfo" columns represent the start and end mileposts
# of each roadway segment. For example, the segment with road_ID=101 refers
# to the portion of IH20 that starts at milepost 10 and ends at milepost 20.
roads = data.table(road_id=101:109,
hwy=c('IH20','IH20','IH20','SH150','SH150','SH150','TX66','TX66','TX66'),
frm_dfo=c(10,20,30,10,20,30,10,20,30),
to_dfo=c(20,30,40,20,30,40,20,30,40),
seg_name=c('Seg 1','Seg 2', 'Seg 3','Seg 10','Seg 20', 'Seg …Run Code Online (Sandbox Code Playgroud) 如何在Python中向量化多元标准CDF(累积密度函数)?
在查看这篇文章时,我发现有一个“移植”到Python的多变量CDF的Fortran实现。这意味着我可以轻松评估一种特定情况下的CDF。
但是,我很难有效地将此功能应用于多个条目。
具体来说,我需要“向量化”的函数有4个参数:
但是,我试图多次多次对1000多个元素进行有效评估。
这是一些代码来说明我的问题。在下面的示例中,我仅使用随机数据来说明我的观点。
import time
import numpy as np
from scipy.stats.mvn import mvnun # library that calculates MVN CDF
np.random.seed(666)
iters = 1000 # number of times the whole dataset will be evaluated
obs = 1500 # number of elements in the dataset
dim = 2 # dimension of multivariate normal distribution
lower = np.random.rand(obs,dim)
upper = lower + np.random.rand(obs,dim)
means = np.random.rand(obs,dim)
# Creates a symmetric matrix - used for …Run Code Online (Sandbox Code Playgroud) 是否可以对 Pandas DataFrame 的行相对于多个列进行排序,并将列中的某些行按升序放置,而其他行(同一列内)按降序放置?这是我正在寻找的一个可重复的小例子:
import pandas as pd
df = pd.DataFrame(data={'class':['A','A','A','B','B','B','C','C','C'],
'val':[20,10,15,55, 75, 71,3,1,2],
'sub':['a','c','b','b','a','c','c','a','b']})
print(df)
# This is the original unsorted DataFrame
# class val sub
#0 A 20 a
#1 A 10 c
#2 A 15 b
#3 B 55 b
#4 B 75 a
#5 B 71 c
#6 C 3 c
#7 C 1 a
#8 C 2 b
Run Code Online (Sandbox Code Playgroud)
如何df根据以下“规则”对上面的 DataFrame 对象进行排序?
从更实际的角度来说,我正在寻找的结果如下所示:
# This is …Run Code Online (Sandbox Code Playgroud) 我很难对一些需要使用if/else语句检查条件的列执行操作。
更具体地说,我试图在assignPandas Dataframe 方法的范围内执行此检查。这是我想做的一个例子
# Importing Pandas
import pandas as pd
# Creating synthetic data
my_df = pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10],
'col2':[11,22,33,44,55,66,77,88,99,1010]})
# Creating a separate output DataFrame that doesn't overwrite
# the original input DataFrame
out_df = my_df.assign(
# Successfully creating a new column called `col3` using a lambda function
col3=lambda row: row['col1'] + row['col2'],
# Using a new lambda function to perform an operation on the newly
# generated column.
bleep_bloop=lambda row: 'bleep' if (row['col3']%8 == …Run Code Online (Sandbox Code Playgroud) 如何根据多列对 Pandas DataFrame 进行排序,其中一些列按升序排序,而其他列按降序排序?
此外,假设将用于排序的列有太多唯一值,无法为排序键或函数一一列出pd.Categorical(如本线程中建议的)。
这是一个可重现的小示例:
import pandas as pd
my_df = pd.DataFrame({'col1':['a','a','a','a','b','b','b','b','c','c','c','c'],
'col2':[1,1,2,2,1,1,2,2,1,1,2,2],
'col3':[1,2,1,2,1,2,1,2,1,2,1,2]})
Run Code Online (Sandbox Code Playgroud)
假设在上面的示例中,我想my_df按如下方式排序:
col1按降序排列col2按降序排列col3按升序排列python ×4
dataframe ×3
pandas ×3
sorting ×2
cdf ×1
data.table ×1
if-statement ×1
join ×1
lambda ×1
r ×1
statistics ×1
tidyverse ×1