给定具有多列的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)
不幸的是,这不是矢量化操作,并且在大型数据集上需要很长时间.任何想法,将不胜感激.
我的目标是使用一个模型来选择最重要的变量,使用另一个模型来使用这些变量进行预测.在下面的示例中,我使用两个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")之前设置阈值属性并且它有效; 但是,我无法弄清楚如何对其进行网格搜索.
有没有办法迭代通常预期在分类器的转换方法中提供的不同参数?
以下按预期工作.有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)