Dengan menggunakan Python, saya mencoba membuat daftar kata yang terdiri dari 4 dan 5 karakter untuk digunakan dalam game mirip Scrabble. Dari apa yang saya kumpulkan, saya harus menggunakan itertools, tetapi saya terjebak pada cara menggabungkannya dengan Pandas (saya memiliki file csv dengan semua kata).

Saya telah mencoba menggunakan Pandas dan Itertools menggunakan apa yang saya temukan di utas sebelumnya dan telah menghasilkan yang berikut yang mengembalikan kesalahan:

from itertools import chain, combinations
import pandas as pd

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(4))

data = {'A':['hammers','hampering','hamburger']}
df = pd.DataFrame(data)

df['subset 4ch'] = df.apply(lambda row : powerset(row['A']), axis=1)

Output yang saya inginkan di kolom subset untuk "palu":
hamm, amme, mmer dll + hmrs, aers, dll.

Bagaimana saya mencapai ini?

Produk akhir akan menjadi peringkat dari setiap batang yang mungkin dan kata-kata yang muncul di dalamnya. Saya dapat melihat bahwa fungsi saya adalah membuat tupel, apakah ini yang paling diinginkan dengan produk akhir yang saya inginkan?

Terima kasih sebelumnya!

1
AndreasL 15 Mei 2020, 15:22

1 menjawab

Jawaban Terbaik

Coba dengan cara ini:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return [''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))] 

df['subset 4ch'] = df.apply(lambda row : powerset(row['A']), axis=1)

Keluaran:

    A           subset 4ch
0   hammers     [hamm, hame, hamr, hams, hame, hamr, hams, hae...
1   hampering   [hamp, hame, hamr, hami, hamn, hamg, hape, hap...
2   hamburger   [hamb, hamu, hamr, hamg, hame, hamr, habu, hab...

Dan jika Anda tidak ingin kata-kata keluaran dalam daftar:

return ", ".join([''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))])

    A           subset 4ch
0   hammers     hamm, hame, hamr, hams, hame, hamr, hams, haer...
1   hampering   hamp, hame, hamr, hami, hamn, hamg, hape, hapr...
2   hamburger   hamb, hamu, hamr, hamg, hame, hamr, habu, habr...
0
DavideBrex 15 Mei 2020, 15:40