小编Fel*_* D.的帖子

非等值连接不保留原始列值

我在运行非等连接(来自 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)

join r data.table tidyverse non-equi-join

7
推荐指数
0
解决办法
304
查看次数

在Python中向量化多元标准CDF(累积密度函数)

如何在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)

python statistics normal-distribution vectorization cdf

5
推荐指数
1
解决办法
327
查看次数

如何对 Pandas 数据框进行条件排序(即根据另一列中的值在一列中进行升序和降序排列)?

是否可以对 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 对象进行排序?

  • 第一优先级:根据“类别”列按字母升序排序
  • 第二优先级:然后,在“class”列的每个唯一值中,根据“val”列对行进行排序,如下所示:
    • 对于“class”==“A”的行,按升序对“val”值进行排序
    • 对于“class”==“B”的行,按降序对“val”值进行排序
    • 对于“class”==“C”的行,按升序对“val”值进行排序

从更实际的角度来说,我正在寻找的结果如下所示:

# This is …
Run Code Online (Sandbox Code Playgroud)

python sorting dataframe pandas

5
推荐指数
1
解决办法
3315
查看次数

在 Pandas DataFrame 的“assign”方法中使用“if”语句

介绍和可复制的代码片段

我很难对一些需要使用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)

python lambda if-statement dataframe pandas

2
推荐指数
1
解决办法
266
查看次数

如何对具有多列的 Pandas DataFrame 进行排序,其中一些按升序排列,另一些按降序排列?

如何根据多列对 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 sorting dataframe pandas

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