Python 熊猫:如果子矩阵有足够的空值,则删除列

Python 熊猫:如果子矩阵有足够的空值,则删除列,python,pandas,Python,Pandas,我正在Kaggle()上进行一些机器学习,并获得了一个训练CSV和一个测试CSV 我想删除数据中至少30%的值为空的列。如果我只是为我的训练集这样做,我会这样做: train_df = pd.read_csv("train.csv") train_len = len(train_df) test_df = pd.read_csv("test.csv") threshold = int(0.7 * train_len) train_df.dropna(axis=1, thresh=threshol

我正在Kaggle()上进行一些机器学习,并获得了一个训练CSV和一个测试CSV

我想删除数据中至少30%的值为空的列。如果我只是为我的训练集这样做,我会这样做:

train_df = pd.read_csv("train.csv")
train_len = len(train_df)
test_df = pd.read_csv("test.csv")
threshold = int(0.7 * train_len)
train_df.dropna(axis=1, thresh=threshold, inplace=True)
这很有效。但是,我也想在测试集中删除这些列。具体来说,我想在我的训练集中找到空值为30%或更多的列,并从训练集和测试集中删除它们

我正在考虑这样组合我的数据帧:

combined_df = pd.concat([train_df, test_df], axis=0)
如果
combined_df[:train_len,:]
的空值超过30%,请从
combined_df
中删除该列

train_df.dropna(axis=1, thresh=threshold, inplace=True)
test_df = test_df[train_df.columns]
我该怎么做?明确地说,我不想在整个列中循环,找到空值超过30%的列,从列中删除,然后从测试中删除


谢谢

test\u df
中删除列后,只需使用剩余的列名选择
test\u df
中的列即可

train_df.dropna(axis=1, thresh=threshold, inplace=True)
test_df = test_df[train_df.columns]

test\u df
中删除列后,只需使用剩余的列名选择
test\u df
中的列即可

train_df.dropna(axis=1, thresh=threshold, inplace=True)
test_df = test_df[train_df.columns]
数据输入

     A    B
0  1.0  2.0
1  NaN  NaN
2  3.0  4.0
3  4.0  NaN
数据输入

     A    B
0  1.0  2.0
1  NaN  NaN
2  3.0  4.0
3  4.0  NaN

谢谢你的帮助。但是,我不想为了df而放弃它。我想结合
训练测向
测试测向
并根据
训练测向
中缺少至少30%数据的列,删除
组合测向
values@bclayman将df更改为train_df,并收集需要删除的列。我只是将df用作示例数据集谢谢您的帮助。但是,我不想为了df而放弃它。我想结合
训练测向
测试测向
并根据
训练测向
中缺少至少30%数据的列,删除
组合测向
values@bclayman将df更改为train_df,并收集需要删除的列。我只是将df用作示例数据集