小编EGM*_*686的帖子

Pandas DataFrame检查列值是否存在列值

我有这样的DataFrame(简化示例)

id  v0  v1  v2  v3  v4
1   10  5   10  22  50
2   22  23  55  60  50
3   8   2   40  80  110
4   15  15  25  100 101
Run Code Online (Sandbox Code Playgroud)

并且如果v0值在v1到v4的值中,则想要创建一个1或0的附加列,如果不是,则创建0.因此,在此示例中,对于id 1,则该值应为1(因为v2 = 10),并且对于id 2值应该为0,因为22不在v1到v4中.

实际上,表格更大(大约100,000行,变量从v1到v99).

python numpy dataframe pandas

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

嵌套列表中元素的 Python SUMPRODUCT

我有两个嵌套列表:

\n
a = [[1,2,3],[2,4,2]]\nb = [[5,5,5],[1,1,1]]\n
Run Code Online (Sandbox Code Playgroud)\n

我想将每组元素相乘并求和得到

\n
c = [[30],[8]]\n
Run Code Online (Sandbox Code Playgroud)\n

哪个结果来自= [[1*5+2*5+3*5],[2*1,4*1,2*1]]

\n

我\xc2\xb4ve尝试这样做:

\n
a = [[1,2,3],[2,4,2]]\nb = [[5,5,5],[1,1,1]]\n
Run Code Online (Sandbox Code Playgroud)\n

但我得到“无法将序列乘以“列表”类型的非 int”

\n

是否有一种简单的列表理解方法可以避免 for 循环?

\n

python

7
推荐指数
2
解决办法
2万
查看次数

Python - 在多个数据帧中交换值

我有这样的DataFrame

id  val1   val2
0    A      B
1    B      B
2    A      A
3    A      A
Run Code Online (Sandbox Code Playgroud)

我想交换以下值:

id  val1   val2
0    B      A
1    A      A
2    B      B
3    B      B
Run Code Online (Sandbox Code Playgroud)

我需要考虑df可能有其他列我想保持不变.

python dataframe pandas

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

基于有效值的组合聚合

我有一个具有以下结构的 df:

id  a1_l1   a2_l1   a3_l1   a1_l2   a2_l2   a3_l2
1   1       5       3       1       2       3
2   1       5       3       1       2       3
3   2       5       3       5       5       3
4   5       5       3       5       5       3
5   5       5       2           
6   5       5       2           
7   5       5       2           
8   2       5       2           
9   3       5       1           
10  3       5       1   
Run Code Online (Sandbox Code Playgroud)

我想总结在一个表格中,这样我就可以得到:

    l1  l2
a1  0.4 0.5
a2  1   0.5
a3  0   0
Run Code Online (Sandbox Code Playgroud)

我正在做的是计算 5 出现的次数除以有效响应的数量,例如:

a1, l1 等于 0.4,因为我有 …

python dataframe pandas

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

将DataFrame乘以不同形状的DataFrame(或系列)

我有这样的DataFrame:

1  2  1  3  1  4
2  4  5  1  1  4
1  3  5  3  1  4
1  3  1  3  1  4
Run Code Online (Sandbox Code Playgroud)

这样的另一个

1  1  0  0  0  0
Run Code Online (Sandbox Code Playgroud)

我想乘以他们得到

1  2  0  0  0  0
2  4  0  0  0  0
1  3  0  0  0  0
1  3  0  0  0  0
Run Code Online (Sandbox Code Playgroud)

因此,正在发生的情况是,第二个df中的每个列都将每个值乘以一个,而每个列中的值为零则将第一个数据帧中的所有列都乘以0。

python numpy pandas numpy-broadcasting

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

Google Cloud Storage加入多个csv文件

考虑到BigQuery导出的文件大小为99个csv文件,我将数据集从Google BigQuery导出到Google Cloud Storage。

但是,现在我想连接到我的GCP存储桶并使用Spark执行一些分析,但是我需要将所有99个文件加入一个大的csv文件中以运行分析。

如何做到这一点?

google-cloud-storage google-bigquery

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

在选择函数中将不带引号的参数作为字符传递

我有一个数据框:

data <- data.frame(
    name = c("John", "Paul", "George", "Ringo", "Stuart", "Pete"),
    instrument1 = c("guitar", "bass", "guitar", "drums", "bass","drums"),
    instrument2 = c("guitar", "bass", "guitar", "drums", "bass","drums"),stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

我创建了一个这样的函数:

sel <- function(df, variable) {
    var <- enquo(variable)
    df2 <- select(df, starts_with(!!var))
    return(df2)
}
Run Code Online (Sandbox Code Playgroud)

如何使用以下命令运行此功能:

sel(data, instrument)
Run Code Online (Sandbox Code Playgroud)

无需引用参数“instrument”。我需要它不被引用,因为这是一个更大的函数的一部分。如果我像上面那样运行它,我会得到:

Error in is_string(match) : object 'instrument' not found 
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

根据列合并和重新排序数据框

我有两个这样的数据集(简化示例)

id A B C
1  1 2 3 
2  4 1 3
3  2 5 3
Run Code Online (Sandbox Code Playgroud)

id A B C
1  2 2 2 
2  3 3 3
3  4 4 4
Run Code Online (Sandbox Code Playgroud)

我怎样才能加入才能得到

id A1 A2 B1 B2 C1 C2
1  1  2  2  2  3  2 
2  4  3  1  3  3  3
3  2  4  5  4  3  4
Run Code Online (Sandbox Code Playgroud)

所以我想保留 Id 并将 dfs 与 df1 的第一列组合为第一列,将第二个 df 中的第一列组合为 2 等等......

python pandas

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

用于重新编码值或类似值的 R 函数(如 SPSS)

我有一个具有以下结构的数据框:

id v1 v2 v3 v4 v5
1  .  1  .  2  3
2  1  2  3  .  .
3  3  2  .  1  .
Run Code Online (Sandbox Code Playgroud)

我想像这样重新编码

id v1 v2 v3 v4 v5
1  0  3  0  2  1
2  3  2  1  0  0
3  1  2  0  3  0
Run Code Online (Sandbox Code Playgroud)

所以我想重新编码值 (1=3) (missing = 0) (3=1)

在 SPSS 中,这是相当直观的:

recode v1 to v5 (sysmis=0)(3=1)(1=3)(else=copy). 
Run Code Online (Sandbox Code Playgroud)

我正在 R 中寻找类似的方法。对基本方法或 tidyverse 方法没有偏好。

r recode tidyverse

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

在 Pandas DF 中按行将 MAX 值替换为 1(否则 = 0)

我有一个包含很多列的 DF,鉴于每行的最大值为 1 而其他所有值均为 0,如何用(1 或 0)替换这些值。所以如果我有

v1 v2 v3
1  3  2
0  4  .5
.1 .1 .7
Run Code Online (Sandbox Code Playgroud)

并得到:

v1 v2 v3
0  1  0
0  1  0
0  0  1   
Run Code Online (Sandbox Code Playgroud)

根据之前的计算,数字是浮点数,每行不可能有重复的数字。

谢谢,

python pandas

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

使用 R + ggplot 在线条图中绘制点

通常我会在 Excel 中创建这样的图:

在此处输入图片说明

我正在探索将它移动到 ggplot,但是在我没有看到可以使用的几何图形中,关于如何使用 R 和 ggplot 复制它的任何想法?

r ggplot2 tidyverse

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

根据聚合计数删除行

有这样的数据框

car model
toyota corolla
toyota rav4
honda  civic
honda  civic
honda  accord
Run Code Online (Sandbox Code Playgroud)

我如何编写一个删除次数少于 n 次的品牌,比如我想删除出现次数少于 3 次的品牌,结果数据帧将是

car model
honda  civic
honda  civic
honda  accord
Run Code Online (Sandbox Code Playgroud)

所以我保留相同的数据框和所有变量,只删除行。

python pandas

0
推荐指数
2
解决办法
32
查看次数