Saya ingin melepaskan kolom yang tidak memiliki konten di mana saja baris dan melepaskan kolom lain yang dimulai dengan nama yang sama.

Dalam contoh ini, Lini Bisnis > Organisasi harus dihilangkan karena hanya ada yang kosong di semua baris. Dan karena kolom ini dihapus, semua kolom lain yang dimulai dengan "Line of business >" juga harus dihapus dari bingkai data pandas. Kerangka data lengkap mengikuti struktur yang sama dari [beberapa teks] > [Organisasi/Departemen/Karyawan].

data = pd.DataFrame({'Process name': {0: 'Ad campaign', 1: 'Payroll', 2: ''},
                   'Line of business > Organization': {0: "", 1: "", 2:''},
                   'Line of business > Department': {0: "Social media", 1: "People", 2:''},
                   'Line of business > Employees': {0: "Linda, Tom", 1: "Manuel, Olaf", 2:''}})

Hasil:

output = pd.DataFrame({'Process name': {0: 'Ad campaign', 1: 'Payroll', 2: ''}})
0
torkestativ 2 Juli 2020, 17:09

1 menjawab

Jawaban Terbaik

Saya harap saya memahami kasus ini dengan benar, tetapi saya pikir Anda dapat mencoba ini:

Pertama, ganti nilai "" kosong dengan NaN:

data.replace('', np.nan, inplace=True)

Kemudian, identifikasi kolom kosong seperti ini:

empty_cols = [col for col in data.columns if data[col].isnull().all()]

Selanjutnya, identifikasi kolom yang akan dihapus. (ini mengasumsikan bahwa '>' adalah pemisah teks yang relevan untuk mengidentifikasi ini).

delete_cols= [col for col in data.columns for empty_col in empty_cols if col.split('>')[0] == empty_col.split('>')[0]]

Akhirnya, jatuhkan kolom yang tidak Anda perlukan dan jatuhkan nilai nol dari kolom yang tersisa:

data = data.drop(delete_cols, axis=1).dropna()
1
naccode 2 Juli 2020, 14:48