假设我有N个列表,它们都具有相同的列名.我想合并这些,以便我得到一个具有相同列的结果列表,但现在包含所有N列表中的条目.这是一个显示我想要的MWE:
ls<-list()
ls[[1]]<-list("a"=1,
"b"=2)
ls[[2]]<-list("a"=3,
"b"=4)
#how to write a one-liner that produces lsTotal, which is the union of ls[[1]] and ls[[2]]?
lsTotal<-list("a"=c(1,3),
"b"=c(2,4))
Run Code Online (Sandbox Code Playgroud)
我发现了这个线程,我可以使用它Map(c, ls[[1]], ls[[2]])
.然而,如果ls
很长的话,写出来是很乏味的.有捷径吗?
我正在使用 SQLAlchemy 创建一个表,如下所示:
import sqlalchemy
df.to_sql(table_name, engine, schema='dbo',
index=True, index_label='IdColumn',
if_exists='replace',
dtype={'IdColumn': sqlalchemy.types.VARCHAR(length=255)})
Run Code Online (Sandbox Code Playgroud)
是否可以指定dtypes
应该IdColumn
是not null
?上面写入df
SQL 服务器,但默认给出IdColumn
类型。(varchar(255), null)
我有两个包含相同列的DataFrame; an id
,a date
和a str
:
df1 = pd.DataFrame({'id': ['1', '2', '3', '4', '10'],
'date': ['4', '5', '6', '7', '8'],
'str': ['a', 'b', 'c', 'd', 'e']})
df2 = pd.DataFrame({'id': ['1', '2', '3', '4', '12'],
'date': ['4', '5', '6', '7', '8'],
'str': ['A', 'B', 'C', 'D', 'Q']})
Run Code Online (Sandbox Code Playgroud)
我想在id
和 date
列上加入这两个数据集,并创建一个结果列,它是以下的连接str
:
df3 = pd.DataFrame({'id': ['1', '2', '3', '4', '10', '12'],
'date': ['4', '5', '6', '7', '8', '8'],
'str': ['aA', 'bB', 'cC', 'dD', 'e', 'Q']})
Run Code Online (Sandbox Code Playgroud)
我想我可以进行内部连接然后连接字符串,但有没有更简单的方法来实现这一点?
经常出现以下问题。假设我有一个数据框,其中一列可以采用离散值:
df = pd.DataFrame({'col1': [1, 2,3,4,5,6,7], 'col2': ["A", "B", "A", "C", "B", "A", "D"]})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,col2
可取的值A,B或C.我只想行,其中col2
不等于A或B.我想下面的语法会的工作,
df["col2"] not in ["A", "B"]
Run Code Online (Sandbox Code Playgroud)
但是,这给了我错误 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有没有一种巧妙的方法来过滤掉这些行?
early-stopping
我想在 scikit-learns -方法中使用 - 选项GridSearchCV
。SO- thread中显示了一个这样的示例:
import xgboost as xgb
from sklearn.model_selection import GridSearchCV
trainX= [[1], [2], [3], [4], [5]]
trainY = [1, 2, 3, 4, 5]
testX = trainX
testY = trainY
param_grid = {"subsample" : [0.5, 0.8],
"n_estimators" : [600]}
fit_params = {"early_stopping_rounds":1,
"eval_set" : [[testX, testY]]}
model = xgb.XGBRegressor()
gridsearch = GridSearchCV(estimator = xgb.XGBRegressor(),
param_grid=param_grid,
fit_params=fit_params,
verbose=1,
cv=2)
gridsearch.fit(trainX,trainY)
Run Code Online (Sandbox Code Playgroud)
但是,我想使用交叉验证过程的保留集作为验证集。有没有办法在 中指定这一点GridSearchCV
?
我有一个包含每行句子的数据帧.我需要在这些句子中搜索某些单词的出现.这就是我目前的做法:
import pandas as pd
p = pd.DataFrame({"sentence" : ["this is a test", "yet another test", "now two tests", "test a", "no test"]})
test_words = ["yet", "test"]
p["word_test"] = ""
p["word_yet"] = ""
for i in range(len(p)):
for word in test_words:
p.loc[i]["word_"+word] = p.loc[i]["sentence"].find(word)
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作,但是,是否可以对此进行优化?对于大型数据帧,它运行速度相当慢
我有以下示例,其中我将一个简单的数据帧传递给一个总结列的函数。我想将汇总列的名称s
作为函数的参数:
df <- data.frame(id = c(1,1,1,1,1,2,2,2,2,2),
a=c(1:10),
b=c(10:19))
sum <- function(df, s){
df <- df %>%
group_by(id) %>%
summarize(s = sum(a))
return(df)
}
sum(df = df, s = "summarizing.column.label")
Run Code Online (Sandbox Code Playgroud)
但是,无论我设置什么值,summarizing-column 总是获得相同的 name s
。有办法改变它吗?
编辑:我想要的输出是:
sum(df = df, s = "summarizing.column.label")
id summarizing.column.label
<dbl> <int>
1 1.00 15
2 2.00 40
sum(df = df, s = "a")
id a
<dbl> <int>
1 1.00 15
2 2.00 40
Run Code Online (Sandbox Code Playgroud) 是否可以重命名/更改字典的所有键?举个例子,我们来看看下面的字典:
a_dict = {'a_var1': 0.05,
'a_var2': 4.0,
'a_var3': 100.0,
'a_var4': 0.3}
Run Code Online (Sandbox Code Playgroud)
我想删除所有的a_
密钥,所以我最终得到了
a_dict = {'var1': 0.05,
'var2': 4.0,
'var3': 100.0,
'var4': 0.3}
Run Code Online (Sandbox Code Playgroud) 我有以下嵌套列表,我想使用 Rcpp 循环:
nested_list <- list("a"=list("a_a","a_b","a_c"),
"b"=list("b_a", "b_b", "b_c"))
Run Code Online (Sandbox Code Playgroud)
这是我的尝试:
#include <Rcpp.h>
#include <iostream>
using namespace Rcpp;
// [[Rcpp::export]]
CharacterVector names_get( Rcpp::List y ){
return y.names() ;
}
// [[Rcpp::export]]
void output( Rcpp::List y ){
for(const auto &i : names_get(y))
{
Rcpp::List tmp = y[std::string(i)];
for(const auto &j : integer_names_get(tmp))
std::cout << j << "\n";
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当我运行它时output(nested_list)
出现错误Error in output(nested_list) : not compatible with STRSXP
这个错误是什么意思,它在哪里/为什么出现?
我有一个具有以下形式的 pandas 数据框:
import pandas as pd
p = pd.DataFrame({"int" : [1, 1, 1, 1, 2, 2],
"cod" : [[1,1], [2,2], [1,2], [3,9], [2,2], [2,2]]})
Run Code Online (Sandbox Code Playgroud)
我想要 group by int
,它给了我一堆列表。然后我想展平这些列表,所以我最终得到一个具有以下形式的数据框:
p = pd.DataFrame({"int" : [1, 2],
"cod" : [[1,1,2,2,1,2,3,9], [2,2,2,2]]})
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
p.groupby("int", as_index=False)["cod"]
Run Code Online (Sandbox Code Playgroud)
一旦我分组,我就陷入了如何展平的困境int
我有一个数据框,NaN
在-column中包含一些值t
.t
-column中的值属于某个值,id
并且应该相同id
:
df = pd.DataFrame({"t" : [4, 4, 1, 1, float('nan'), 2, 2, 2, float('nan'), 10],
"id": [1, 1, 2, 2, 3, 3, 3 , 3, 4, 4]})
Run Code Online (Sandbox Code Playgroud)
因此,我想覆盖 NaN
在t
与非NaN
在t
用于相应的id
与最终结束了
df = pd.DataFrame({"t" : [4, 4, 1, 1, 2, 2, 2, 2, 10, 10],
"id": [1, 1, 2, 2, 3, 3, 3 , 3, 4, 4]})
Run Code Online (Sandbox Code Playgroud) python ×8
pandas ×6
dataframe ×3
r ×3
dictionary ×1
dplyr ×1
grid-search ×1
join ×1
list ×1
nested-lists ×1
rcpp ×1
scikit-learn ×1
sqlalchemy ×1
xgboost ×1