使用 concat 连接两个 DataFrame 时,默认情况下,concat 创建一个新的 DataFrame,其中包含两个 DataFrame 列的并集,并在结果中设置任何缺失列的值为 NaN。例如...
import pandas as pd
a = pd.DataFrame({'A':range(5), 'B':range(5)})
b = pd.DataFrame({'A':range(5)})
pd.concat([a , b], sort=False)
A B
0 0 0.0
1 1 1.0
...
3 3 NaN
4 4 NaN
但是,如果其中一个数据框中缺失的列包含时间戳,则会出现错误...
a = pd.DataFrame({'A':range(5), 'B':[pd.Timestamp.utcnow() for _ in range(5)]})
b = pd.DataFrame({'A':range(5)})
pd.concat([a , b], sort=False)
抛出 "AttributeError: 'NoneType' 对象没有属性 '_can_consolidate'" 错误。
Python 3.6.5; Pandas 0.23; Windows 7 x64
这是已知的问题吗?
是否存在已知的解决方法?
NaT
列是一个潜在的解决方法,例如pd.concat([a, b.assign(B=pd.NaT)], sort=False)
。 - root