如何从数据框中逐行删除列出的条目?

时间:2019-01-24 19:31:23

标签: python pandas list dataframe sublist

我有两个单独的数据帧,每个数据帧约有10万行。一个数据框包含满足条件A的列名称列表(列标题“ list_A”),另一个数据框(包含列标题“ list_B”)包含不符合条件B的名称列表(根据特定于其相对数据框的单独信息计算得出) )。我试图通过不使用循环从列表A中删除列表B中的名称来创建同时满足这两个条件的名称的列表。这可能吗?

例如,拉出“ list_A”列可能是这样的:

    [['X','Y','Z','A'],
     ['X','Y','Z','A'],
     ['Y','Z','A']...]

“ list_B”可能是这样的:

    [['Z'],
     [],
     ['A']...]

最后,我想这样:

    [['X','Y','A'],
     ['X','Y','Z','A'],
     ['Y','Z']...]

有没有一种方法可以在不花费时间的情况下进行for循环?

2 个答案:

答案 0 :(得分:3)

如果顺序无关紧要,请尝试

df['list_A'] = df.apply(lambda x: list(set(x['list_A']) - set(x['list_B'])), axis=1)

答案 1 :(得分:3)

您可以按以下方式进行操作((也许可以采用更高性能的方式,但列中的列表并不倾向于采用高速向量化操作)

# A function to make a 3d data of what I understood needed done:
def preprocess_data(stock, seq_len):
    amount_of_features = len(stock.columns)
    data = stock.values

    sequence_length = seq_len #+ 1
    result = []
    for index in range(len(data) - sequence_length):
        result.append(data[index : index + sequence_length])

    X_train = np.array(result)  

    X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], amount_of_features))

    return X_train

# creating the train as:
# X == the DF of 1500 rows and 2000 features
window = 10
train_X = preprocess_data(X[::-1], window)