Ale*_*lex 6 python concatenation multi-index pandas
更新:这不再是一个问题,因为至少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)
Run Code Online (Sandbox Code Playgroud)
这会产生以下数据帧:
>>> df1
0 a
1 b
2 c
dtype: object
Run Code Online (Sandbox Code Playgroud)
但是我希望它能产生这样的东西:
>>> df2
0 1
0 NaN a
1 NaN b
2 NaN c
Run Code Online (Sandbox Code Playgroud)
如果我在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)
Run Code Online (Sandbox Code Playgroud)
产生这个:
>>> df
0
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)
但是如果我们在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)
Run Code Online (Sandbox Code Playgroud)
哪个产生所需的数据帧:
>>> df
0 1 2
0 NaN 1 NaN
1 NaN 2 NaN
2 NaN 3 NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10427 次 |
| 最近记录: |