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

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

Pandas 合并列中的行

Pandas 合并列中的行

蝴蝶刀刀 2023-09-19 17:29:54
擁有這個(gè)數(shù)據(jù)框:A      B                 C    D Train  Superfast         10   20 NaN    Convernient       NaN NaNNaN    Newest model      NaN NaNNaN    Year 2002/099     NaN NaNCar    Fastest           20   30NaN    Can be more fast  NaN NaNNsN    Year/2020/AYD     NaN NaN是否可以將列中的行B向上移動(dòng)到其他列中具有剩余值的行?A      B                                                  C  D Train  Superfast Convernient Newest model Year 2002/099  10 20 Car    Fastest Can be more fast Year/2020/AYD            20 30
查看完整描述

2 回答

?
慕容森

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

讓我們用cumsum它來(lái)識(shí)別塊和分組:


blocks = df['C'].notna().cumsum()


agg_dict = {col:' '.join if col=='B' else 'first' for col in df}


df.groupby(blocks).agg(agg_dict).reset_index(drop=True)

輸出:


       A                                                 B     C     D

0  Train  Superfast Convernient Newest model Year 2002/099  10.0  20.0

1    Car            Fastest Can be more fast Year/2020/AYD  20.0  30.0


查看完整回答
反對(duì) 回復(fù) 2023-09-19
?
肥皂起泡泡

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

一個(gè)有點(diǎn)復(fù)雜的解決方案,僅使用numpy,但對(duì)于大數(shù)據(jù)來(lái)說(shuō)工作速度非??欤?/p>

嘗試在線運(yùn)行它!

import pandas as pd, numpy as np, math


df = pd.DataFrame([

    ['Train', 'Superfast', 10, 20],

    [np.nan, 'Convernient', np.nan, np.nan],

    [np.nan, 'Newest model', np.nan, np.nan],

    [np.nan, 'Year 2002/099', np.nan, np.nan],

    ['Car', 'Fastest', 20, 30],

    [np.nan, 'Can be more fast', np.nan, np.nan],

    [np.nan, 'Year/2020/AYD', np.nan, np.nan],

], columns = ['A', 'B', 'C', 'D'])


a = df.values

i = np.append(np.flatnonzero(~(a[:, 0] != a[:, 0])), a.shape[0])

b = a[i[:-1], :]

diffs = np.diff(i)

maxs = np.amax(diffs)

c = np.zeros([i.shape[0], maxs], dtype = np.str_)


begs, ends = i[:-1], i[1:]

for j in range(1, maxs):

    chosen = begs + j < ends

    b[chosen, 1] += ' ' + a[begs[chosen] + j, 1]


df = pd.DataFrame(b, columns = df.columns.values.tolist())

print(df)

代碼輸出:


       A                                                 B   C   D

0  Train  Superfast Convernient Newest model Year 2002/099  10  20

1    Car            Fastest Can be more fast Year/2020/AYD  20  30


查看完整回答
反對(duì) 回復(fù) 2023-09-19
  • 2 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報(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)