我正在阅读Excel工作表,我想读取某些列:第0列,因为它是行索引,第22:37列.现在我正在做的事情:
import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37)
df= pd.concat([df[df.columns[0]], df[df.columns[22:]]], axis=1)
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的方法来做到这一点!我知道如果我parse_cols=[0, 22,..,37]能这样做,但对于大型数据集,这没有意义.
我也这样做了:
s = pd.Series(0)
s[1]=22
for i in range(2,14):
s[i]=s[i-1]+1
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = s)
Run Code Online (Sandbox Code Playgroud)
但它读取前15列的长度s.
我想写一段代码来创建多个dataFrame数组,其名称格式为word_0000,其中四位数字是月份和年份.我想要做的一个例子是创建以下数据帧:
df_0115, df_0215, df_0315, ... , df_1215
stat_0115, stat_0215, stat_0315, ... , stat_1215
Run Code Online (Sandbox Code Playgroud) 我有一个带有 3 个参数的函数。我想计算该函数并输出每个参数组合的结果。
我已经定义了我的函数F(A,B,C),现在我们可以假设它的输出是一个单一的值f(A,B,C)。
然后我运行一个嵌套循环:
for A in range(1,2):
for B in range(4,5):
for C in range(7,8,9):
F(A,B,C)
Run Code Online (Sandbox Code Playgroud)
但它会覆盖。我想要的是这样的数据框:
A B C Output
1 4 7 f(1,4,7)
1 4 8 f(1,4,8)
1 4 9 f(1,4,9)
1 5 7 f(1,5,7)
1 5 8 f(1,5,8)
1 5 9 f(1,5,9)
2 4 7 f(2,4,7)
2 4 8 f(2,4,8)
2 4 9 f(2,4,9)
2 5 7 f(2,5,7)
2 5 8 f(2,5,8)
2 5 9 f(2,5,9)
Run Code Online (Sandbox Code Playgroud) 我编写了一个函数,可以进行一些分析,包括使用NPS包计算一个名为"Net Promoter Score"的度量.
library(dplyr)
library(tidyr)
library(NPS)
df<-data.frame(score = sample(c(0:10),15,replace=TRUE),
variable = sample(c('A', 'B', 'C'),15,replace=TRUE)
)
analyzer <- function(df,var, sco){
df %>% group_by_(var) %>% transmute(n= nps(sco)) %>% unique()
}
analyzer(df,'variable','score')
Run Code Online (Sandbox Code Playgroud)
这将返回NA所有级别的变量.
现在dplyr函数有一种处理x作为字符传递给它们的方法(即,_我在这里使用它们的版本),但nps函数没有.我也试过通过得分列,nps(.[[score]])但这会返回整列的NPS,并且不会按group_by级别将其分解.