为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 从一个数据帧中删除不在另一个数据帧索引中的列

Pandas 从一个数据帧中删除不在另一个数据帧索引中的列

翻阅古今 2022-01-11 15:53:43
我想从数据帧(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 makefor 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 索引的列。
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

由于某种原因,我无法在 Pandas 中调用列表列表,并且无法编辑元组。最后,我创建了包含数据框和系列的元组列表的副本:


# Drop anything not significant from make_results

for datas in make_results:

    datas.drop(datas.loc[datas['P>|z|'] > .05].index, inplace=True)



def remove_others(t, cols):

    tuple_list = list(t)

    tuple_list[0] = tuple_list[0][cols]

    tuple_list[1] = tuple_list[1][cols]

    return tuple(tuple_list)



new_train_test_sets = []


list_index = 0


#for df in make_results:

for t in makes_train_test_sets:

    new_train_test_sets.append(remove_others(t, make_results[list_index].index.values))

    list_index += 1



makes_train_test_sets = new_train_test_sets


查看完整回答
反对 回复 2022-01-11
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

如果我理解您想要正确执行的操作,那么您似乎使用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)


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信