小编Jas*_*hez的帖子

Pandas:按行从DataFrame的特定列中选择值

给定具有多列的DataFrame,我们如何逐行选择特定值来创建新系列?

df = pd.DataFrame({"A":[1,2,3,4], 
                   "B":[10,20,30,40], 
                   "C":[100,200,300,400]})
columns_to_select = ["B", "A", "A", "C"]
Run Code Online (Sandbox Code Playgroud)

目标: [10, 2, 3, 400]

一种有效的方法是使用apply语句.

df["cols"] = columns_to_select
df.apply(lambda x: x[x.cols], axis=1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不是矢量化操作,并且在大型数据集上需要很长时间.任何想法,将不胜感激.

python indexing numpy pandas

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

如何在scikit-learn中对管道内的转换参数进行gridsearch

我的目标是使用一个模型来选择最重要的变量,使用另一个模型来使用这些变量进行预测.在下面的示例中,我使用两个RandomForestClassifiers,但第二个模型可以是任何其他分类器.

RF具有带阈值参数的变换方法.我想网格搜索不同的可能阈值参数.

这是一个简化的代码片段:

# Transform object and classifier
rf_filter = RandomForestClassifier(n_estimators=200, n_jobs=-1, random_state=42, oob_score=False)
clf = RandomForestClassifier(n_jobs=-1, random_state=42, oob_score=False)

pipe = Pipeline([("RFF", rf_filter), ("RF", clf)])

# Grid search parameters
rf_n_estimators = [10, 20]
rff_transform = ["median", "mean"] # Search the threshold parameters

estimator = GridSearchCV(pipe,
                         cv = 3, 
                         param_grid = dict(RF__n_estimators = rf_n_estimators,
                                           RFF__threshold = rff_transform))

estimator.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

错误是 ValueError: Invalid parameter threshold for estimator RandomForestClassifier

我认为这会有效,因为文档说:

如果为None且可用,则使用对象属性阈值.

我尝试在网格搜索(rf_filter.threshold = "median")之前设置阈值属性并且它有效; 但是,我无法弄清楚如何对其进行网格搜索.

有没有办法迭代通常预期在分类器的转换方法中提供的不同参数?

python pipeline machine-learning scikit-learn

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

Pandas返回"Passed header names mismatches usecols"错误

以下按预期工作.有190列完全读入.

pd.read_csv("data.csv", 
             header=None,
             names=columns,
             # usecols=columns[:10], 
             nrows=10
             )
Run Code Online (Sandbox Code Playgroud)

我之前使用过usecols参数,所以我很困惑为什么这不再适用于我.我猜想简单地切掉前10个列的名称就可以了,但是我继续得到"Passed header names mismatches usecols"错误.

我正在使用熊猫0.16.2.

pd.read_csv("data.csv", 
             header=None,
             names=columns,
             usecols=columns[:10], 
             nrows=10
             )
Run Code Online (Sandbox Code Playgroud)

追溯

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-44> in <module>()
      3                     nrows=10,
      4                     header=None,
----> 5                     names=columns,
      6                     )

/.../lib/python2.7/site-packages/pandas/io/parsers.pyc in parser_f(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, …
Run Code Online (Sandbox Code Playgroud)

python pandas

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