第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將列表中包含值的列轉(zhuǎn)換為按特定列分組的分隔行

將列表中包含值的列轉(zhuǎn)換為按特定列分組的分隔行

我正在嘗試將列表中包含值的列轉(zhuǎn)換為按特定列分組的分隔行。這就是我的數(shù)據(jù)框:id        rooms        bathrooms        facilities             111       1            2                [2, 3, 4]222       2            3                [4, 5, 6]333       2            1                [2, 3, 4]這就是我需要的數(shù)據(jù)框:id        rooms        bathrooms        facility             111       1            2                2111       1            2                3111       1            2                4222       2            3                4222       2            3                5222       2            3                6333       2            1                2333       2            1                3333       2            1                4我試圖首先轉(zhuǎn)換為列出列設(shè)施:facilities = pd.DataFrame(df.facilities.tolist())然后按列連接并按照相同的方法使用另一個(gè)建議的解決方案:df[['id', 'rooms', 'bathrooms']].join(facilities).melt(id_vars=['id', 'rooms', 'bathrooms']).drop('variable', 1)不幸的是,它對(duì)我不起作用。另一個(gè)解決方案?
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

你需要explode

df.explode('facilities')


#? ? id? rooms? bathrooms facilities

#0? 111? ? ? 1? ? ? ? ? 2? ? ? ? ? 2

#0? 111? ? ? 1? ? ? ? ? 2? ? ? ? ? 3

#0? 111? ? ? 1? ? ? ? ? 2? ? ? ? ? 4

#1? 222? ? ? 2? ? ? ? ? 3? ? ? ? ? 4

#1? 222? ? ? 2? ? ? ? ? 3? ? ? ? ? 5

#1? 222? ? ? 2? ? ? ? ? 3? ? ? ? ? 6

#2? 333? ? ? 2? ? ? ? ? 1? ? ? ? ? 2

#2? 333? ? ? 2? ? ? ? ? 1? ? ? ? ? 3

#2? 333? ? ? 2? ? ? ? ? 1? ? ? ? ? 4


查看完整回答
反對(duì) 回復(fù) 2023-11-09
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

將列表作為數(shù)據(jù)框中的值有點(diǎn)尷尬,因此我能想到的解決此問(wèn)題的一種方法是解壓列表并將每個(gè)列表存儲(chǔ)在其自己的列中,然后使用熔化函數(shù)。


# recreate your data

d = {"id":[111, 222, 333],

    "rooms": [1,2,2],

    "bathrooms": [2,3,1],

    "facilities": [[2, 3, 4],[4, 5, 6],[2, 3, 4]]}


df = pd.DataFrame(d)


# unpack the lists

f0, f1, f2 = [],[],[]


for row in df.itertuples():

    f0.append(row.facilities[0])

    f1.append(row.facilities[1])

    f2.append(row.facilities[2])

    

df["f0"] = f0

df["f1"] = f1

df["f2"] = f2


# melt the dataframe

df = pd.melt(df, id_vars=['id', 'rooms', 'bathrooms'], value_vars=["f0", "f1", "f2"], value_name="facilities")


# optionally sort the values and remove the "variable" column

df.sort_values(by=['id'], inplace=True)

df = df[['id', 'rooms', 'bathrooms', 'facilities']]

我認(rèn)為這應(yīng)該可以為您提供所需的數(shù)據(jù)框。


    id  rooms   bathrooms   facilities

0   111 1   2   2

3   111 1   2   3

6   111 1   2   4

1   222 2   3   4

4   222 2   3   5

7   222 2   3   6

2   333 2   1   2

5   333 2   1   3

8   333 2   1   4


查看完整回答
反對(duì) 回復(fù) 2023-11-09
  • 2 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)