python - Pandas 从一个数据帧中删除不在另一个数据帧索引中的列 - 错误 TypeError: unhashable type: 'numpy.ndarray'
问题描述
我想从数据帧(make_results 中的 df)中获取索引,并确保只有索引是其他两个数据帧(X_train、X_test)中的列。
但我目前收到错误:
TypeError:不可散列的类型:'numpy.ndarray'
这适用于列表中的多个数据框。
所以对于这些数据帧: Dataframes X_Train 和 T_test
我希望他们只有与这些索引匹配的列: 索引
# Remove variables with no relationship from the X_train and X_test data for each make
for X_train, X_test in zip([t[0] for t in makes_train_test_sets],
[t[1] for t in makes_train_test_sets]):
# Remove test and training data any insignificant variables
X_train = X_train.filter(df.index.values for df in make_results)
X_test = X_test.filter(df.index.values for df in make_results)
对于数据集 X_train 和 X_test,剩下的唯一列应该是那些在 make_results 中为 df.index.values 索引的列。
解决方案
如果我理解您想要正确执行的操作,那么您似乎使用filter
了错误的方式。
如果您只是想知道如何过滤出作为另一个索引存在的数据框中的列,则需要使用:
X_train.filter(df.index)
如果要遍历可迭代对象中的所有数据帧并一一过滤:
for X_train, X_test in zip([t[0] for t in makes_train_test_sets],
[t[1] for t in makes_train_test_sets]):
for df in mask_results:
X_train = X_train.filter(df.index)
X_test = X_test.filter(df.index)
您还可以以前“获取”这些数据帧的所有索引并仅过滤一次:
index_set = set()
for df in mask_results:
index_set = index_set.union(df.index)
for X_train, X_test in zip([t[0] for t in makes_train_test_sets],
[t[1] for t in makes_train_test_sets]):
X_train = X_train.filter(index_set)
X_test = X_test.filter(index_set)
推荐阅读
- google-apps-script - 如何授予非谷歌会员 webapp 权限?
- python - Python - 当我打印所有键值对时,我应该如何保持键值对的顺序?
- python - 如何从heroku写入github中的sqlite3文件
- python - 使用 Django 按值过滤多个字段布尔值
- sql - 如何根据 SQL Server 中的条件对数据进行分组
- java - 当在某个位置应用某些东西时,它也将应用于自定义 ListView 中的其他位置
- python - 在 JSON 中处理字典
- laravel - 无法在 url 标记中获取获取的值
- numpy - 如何以矢量化方式填充 NumPy 数组列表?
- git-svn - Git配置文件中的fetch和branch有什么区别