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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據(jù)包含的文本值將熊貓數(shù)據(jù)框列拆分為多列

如何根據(jù)包含的文本值將熊貓數(shù)據(jù)框列拆分為多列

長風(fēng)秋雁 2022-06-28 10:04:27
假設(shè)有如下列。df = pd.DataFrame(['A-line B-station 9-min C-station 3-min',                   'D-line E-station 8-min F-line G-station 5-min',                   'G-line H-station 1-min I-station 6-min J-station 8-min'],                    columns=['station'])A,B,C 只是任意字符,并且有很多這樣的行。                                             station0             A-line B-station 9-min C-station 3-min1      D-line E-station 8-min F-line G-station 5-min2  G-line H-station 1-min I-station 6-min J-stati...我們?nèi)绾沃谱魅缦滤镜牧校?nbsp;  Line1     Station1-1   Station1-2 Station1-3   Line2    Station2-10  A-line    B-station    C-station    null       null     null1  D-line    E-station    null         null       F-line   G-station2  G-line    H-station    I-station    J-station  null     nullstationX-X 表示Station(線路號)-(車站順序)Station1-1 表示第一行(line1)的第一站Station1-2 表示第一行(line1)的第二站Station2-1 表示二線(line2)的第一站我試圖按分隔符分割;但是,它不起作用,因為每一行都有不同數(shù)量的線路和車站。我可能需要的是根據(jù)所包含的字符拆分列。例如,我可以將第一個“-line”存儲到 Line1,并將第一個“-station”存儲到 station1-1。有沒有人有任何想法如何做到這一點?任何小想法都可以幫助我!
查看完整描述

1 回答

?
ibeautiful

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

首先Series用Series.str.splitand創(chuàng)建DataFrame.stack:


s = df['station'].str.split(expand=True).stack()

min然后刪除以by boolean indexingwith結(jié)尾的值Series.str.endswith:


df1 = s[~s.str.endswith('min')].to_frame('data').rename_axis(('a','b'))

line然后為s 和為station具有過濾和 的行創(chuàng)建計數(shù)器GroupBy.cumcount:


df1['Line'] = (df1[df1['data'].str.endswith('line')]

                         .groupby(level=0)

                         .cumcount()

                         .add(1)

                         .astype(str))

df1['Line'] = df1['Line'].ffill()


df1['station'] = (df1[df1['data'].str.endswith('station')]

                         .groupby(['a','Line'])

                         .cumcount()

                         .add(1)

                         .astype(str))

使用連接創(chuàng)建系列,將缺失值替換df1['Line']為Series.fillna:


df1['station'] = (df1['Line'] + '-' + df1['station']).fillna(df1['Line'])

DataFrame.set_index通過重塑DataFrame.unstack:


df1 = df1.set_index('station', append=True)['data'].reset_index(level=1, drop=True).unstack()

Rename列名 - 之前不是為了避免錯誤排序:


df1 = df1.rename(columns = lambda x: 'Station' + x if '-' in x else 'Line' + x)

刪除列名:


df1.columns.name = None

df1.index.name = None

print (df1)

    Line1 Station1-1 Station1-2 Station1-3   Line2 Station2-1

0  A-line  B-station  C-station        NaN     NaN        NaN

1  D-line  E-station        NaN        NaN  F-line  G-station

2  G-line  H-station  I-station  J-station     NaN        NaN


查看完整回答
反對 回復(fù) 2022-06-28
  • 1 回答
  • 0 關(guān)注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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