亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何合并或連接具有不同長度和空值的 Pandas 系列?

如何合并或連接具有不同長度和空值的 Pandas 系列?

慕森王 2023-03-30 09:45:03
我有許多以空白作為某些值的系列。像這樣的東西import pandas as pdserie_1 = pd.Series(['a','','b','c','',''])serie_2 = pd.Series(['','d','','','e','f','g'])每個series過濾blank是沒有問題的,像serie_1 = serie_1[serie_1 != '']但是,當我將它們組合在一個 df 中時,無論是從它們構建 df 還是構建兩個單列 df 并連接它們,我都沒有獲得我正在尋找的東西。我正在尋找這樣的表:      col1 col20   a   d1   b   e2   c   f3   nan g但我正在獲得這樣的東西0   a   nan1   nan d2   b   nan3   c   nan4   nan e5   nan f6   nan g我怎樣才能得到我要找的桌子?
查看完整描述

3 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

如果我理解正確的話,這是一種方法:


pd.concat([

    serie_1[lambda x: x != ''].reset_index(drop=True).rename('col1'),

    serie_2[lambda x: x != ''].reset_index(drop=True).rename('col2')

], axis=1)


   col1  col2

0   a    d

1   b    e

2   c    f

3   NaN  g

邏輯是:選擇非空條目(使用 lambda 表達式)。從 0 重新開始索引編號(使用重置索引)。設置列名(重命名)。創建一個寬表(合并函數中的 axis=1)。


查看完整回答
反對 回復 2023-03-30
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

一種使用方式pandas.concat:


ss = [serie_1, serie_2]

df = pd.concat([s[s.ne("")].reset_index(drop=True) for s in ss], 1)

print(df)

輸出:


     0  1

0    a  d

1    b  e

2    c  f

3  NaN  g


查看完整回答
反對 回復 2023-03-30
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

在創建這樣的數據框之前,我會過濾掉空白值:


import pandas as pd


def filter_blanks(string_list):

    return [e for e in string_list if e]


serie_1 = pd.Series(filter_blanks(['a','','b','c','','']))

serie_2 = pd.Series(filter_blanks(['','d','','','e','f','g']))


pd.concat([serie_1, serie_2], axis=1)

結果是:


    0   1

0   a   d

1   b   e

2   c   f

3   NaN g


查看完整回答
反對 回復 2023-03-30
  • 3 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號