Saya memiliki kerangka data dengan banyak pengkodean pada berbagai variabel (jadi seperti Alamat 1 = "foo", Alamat 2 = "bar", dll ..., sama untuk variabel lain).

Saya ingin menulis skrip yang dapat memfilter kerangka data dengan cara 'Alamat apa pun = "foo"' dan dapat mengambil input pengguna untuk variabel mana yang akan difilter. Apakah ada cara untuk melakukan itu atau apakah saya perlu menulis skrip satu per satu untuk setiap variabel? (Untuk itu saya sudah memiliki solusi dalam pikiran saya, saya hanya ingin memiliki solusi yang lebih elegan)

Dataframe saya terlihat seperti ini.

Adress 1    Adress 2 Family Name 1 Family Name 2
0   Austin    New York        Miller         Baker
1    Paris      Austin         Smith          Yang
2  Detroit  Kopenhagen         Baker         Smith

Saya ingin memberi pengguna kemampuan untuk meminta filter seperti Alamat = Austin, dan hasilnya terlihat seperti:

  Adress 1    Adress 2 Family Name 1 Family Name 2
0   Austin    New York        Miller         Baker
1    Paris      Austin         Smith          Yang
1
Sarius1997 20 November 2020, 17:29

1 menjawab

Jawaban Terbaik

Buat DataFrame.

df = pd.DataFrame({'Address1':['Austin','Paris', 'Houston'], 'Address2':['New York', 'Austin', 'SF'], 'FamilyName1':['Miller', 'Smith', 'John'], 'FamilyName2':['Baker', 'Yang', 'Peter']})

Periksa kolom mana yang berisi alamat string dan kemudian verifikasi variabel mana yang memiliki nilai 'Austin'.

ndf = df.loc[:, list(df.columns[df.columns.str.contains(pat = 'Address')])] == 'Austin'

Ringkas ke daftar jika baris berisi True.

list(ndf.any(1))

Pilih baris yang berisi True, yaitu dalam hal ini Austin:

df[list(ndf.any(1))]
0
Ruthger Righart 20 November 2020, 15:13