猿问

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

我有许多以空白作为某些值的系列。像这样的东西


import pandas as pd

serie_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 col2


0   a   d

1   b   e

2   c   f

3   nan g

但我正在获得这样的东西


0   a   nan

1   nan d

2   b   nan

3   c   nan

4   nan e

5   nan f

6   nan g

我怎样才能得到我要找的桌子?


慕森王
浏览 124回答 3
3回答

蓝山帝景

如果我理解正确的话,这是一种方法: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  col20   a    d1   b    e2   c    f3   NaN  g逻辑是:选择非空条目(使用 lambda 表达式)。从 0 重新开始索引编号(使用重置索引)。设置列名(重命名)。创建一个宽表(合并函数中的 axis=1)。

慕妹3242003

一种使用方式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  10    a  d1    b  e2    c  f3  NaN  g

BIG阳

在创建这样的数据框之前,我会过滤掉空白值:import pandas as pddef 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   10   a   d1   b   e2   c   f3   NaN g
随时随地看视频慕课网APP

相关分类

Python
我要回答