python - 使用 .concat 创建 Pandas 数据框时包括空系列

标签 python pandas concatenation multi-index

更新:这不再是问题,至少从 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

但是如果我们在 levels 参数中添加一些标签,它也会包含所有空系列:

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

关于python - 使用 .concat 创建 Pandas 数据框时包括空系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518588/

相关文章:

python - 如何增加 Pandas 图中xticks的大小

python - 如何在 Dataframe 的行级别应用计算?

python - "from sqlalchemy import event"不工作

python - 在Python中生成时 "()"和 "[]"有什么区别?

python - 如何获取两个日期之间的所有星期?

c - 使用 C 连接两个字符串的数据结构程序中的错误

mysql - 使用 sql 查询将文本添加到字段

mysql - 在mysql中将不同的行连接成一行

python - 正则表达式过滤器在开头包含单词但不包含另一个单词

python - HTTP 错误 404 : Not Found Seaborn FacetGrid