在使用.concat创建pandas数据框架时包括空序列



更新:这不再是一个问题,至少从熊猫0.18.1版本。连接空序列不会再删除它们,所以这个问题已经过时了。

我想使用.concat从系列列表中创建一个pandas数据框架。问题是,当其中一个系列为空时,它不会包含在结果数据框中,但这使得数据框是错误的维度,然后我尝试用多索引重命名其列。更新:这里有一个例子…

import pandas as pd
sers1 = pd.Series()
sers2 = pd.Series(['a', 'b', 'c'])
df1 = pd.concat([sers1, sers2], axis=1)

生成以下数据帧:

>>> df1
0    a
1    b
2    c
dtype: object

但是我想让它产生这样的东西:

>>> df2
    0  1
0 NaN  a
1 NaN  b
2 NaN  c

如果我在ser1中放置一个单一的nan值,它就会这样做,但似乎这应该是可能的,即使我的一些序列完全为空。

为关卡传递一个参数就可以了。这里有一个例子。第一,错误的方式:

import pandas as pd
ser1 = pd.Series()
ser2 = pd.Series([1, 2, 3])
list_of_series = [ser1, ser2, ser1]
df = pd.concat(list_of_series, axis=1)

产生如下:

>>> df
   0
0  1
1  2
2  3

但是如果我们给level参数添加一些标签,它也会包括所有的空序列:

import pandas as pd
ser1 = pd.Series()
ser2 = pd.Series([1, 2, 3])
list_of_series = [ser1, ser2, ser1]
labels = range(len(list_of_series))
df = pd.concat(list_of_series, levels=labels, axis=1)

生成所需的数据帧:

>>> df
    0  1   2
0 NaN  1 NaN
1 NaN  2 NaN
2 NaN  3 NaN

最新更新