Python 熊猫:如果子矩阵有足够的空值,则删除列
我正在Kaggle()上进行一些机器学习,并获得了一个训练CSV和一个测试CSV 我想删除数据中至少30%的值为空的列。如果我只是为我的训练集这样做,我会这样做: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
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用作示例数据集