使用 .concat 创建 pandas 数据框时包括空系列
Include empty series when creating a pandas dataframe with .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
但是如果我们在 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
更新:从至少 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