栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python Pandas用户警告:正在排序,因为非串联轴未对齐

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Pandas用户警告:正在排序,因为非串联轴未对齐

tl; dr:

concat``append
如果列不匹配,则当前对非串联索引(例如,如果要添加行的列)进行排序。在大熊猫0.23中,这开始产生警告。传递参数
sort=True
以使其静音。将来默认值将更改为
排序,因此最好指定一个
sort=True
False
现在,或者更好地确保您的非串联索引匹配。


该警告在 pandas 0.23.0中 是新的:

在大熊猫的未来版本

pandas.concat()
Dataframe.append()
将不再这类非串列轴线时尚未对齐。当前行为与先前的行为相同(排序),但是当未指定sort且未串联轴未对齐link时,将发出警告 。

来自链接的非常老的github问题的更多信息,由smcinerney评论:

连接Dataframe时,如果列名称之间存在任何差异,则按字母数字顺序对其进行排序。如果它们在Dataframes中相同,则不会排序。

这种记录是无证的和不需要的。当然,默认行为应为不排序。

一段时间后,参数

sort
pandas.concat
和中实现
Dataframe.append

排序 :布尔值,默认值无

如果联接为“外部”时未对齐轴,则对非串联轴进行排序。当前默认的排序默认值已弃用,在以后的熊猫版本中将更改为不排序。

显式传递sort = True可使警告和排序静音。显式传递sort = False可使警告静音而不进行排序。

当join =’inner’时,这没有任何作用,因为已经保留了非串联轴的顺序。

因此,如果两个Dataframe具有相同顺序的相同列,则不会出现警告,也不会进行排序:

df1 = pd.Dataframe({"a": [1, 2], "b": [0, 8]}, columns=['a', 'b'])df2 = pd.Dataframe({"a": [4, 5], "b": [7, 3]}, columns=['a', 'b'])print (pd.concat([df1, df2]))   a  b0  1  01  2  80  4  71  5  3df1 = pd.Dataframe({"a": [1, 2], "b": [0, 8]}, columns=['b', 'a'])df2 = pd.Dataframe({"a": [4, 5], "b": [7, 3]}, columns=['b', 'a'])print (pd.concat([df1, df2]))   b  a0  0  11  8  20  7  41  3  5

但是,如果Dataframe具有不同的列或相同的列,但顺序不同,则如果未

sort
显式设置参数(
sort=None
默认值),pandas将返回警告:

df1 = pd.Dataframe({"a": [1, 2], "b": [0, 8]}, columns=['b', 'a'])df2 = pd.Dataframe({"a": [4, 5], "b": [7, 3]}, columns=['a', 'b'])print (pd.concat([df1, df2]))

FutureWarning:排序,因为未连接的轴未对齐。

   a  b0  1  01  2  80  4  71  5  3print (pd.concat([df1, df2], sort=True))   a  b0  1  01  2  80  4  71  5  3print (pd.concat([df1, df2], sort=False))   b  a0  0  11  8  20  7  41  3  5

如果Dataframes的列不同,但是前几列对齐-它们将正确地彼此分配(列

a
以及在下面的示例中
b
df1
with
a
b
from
df2
),因为它们都存在。对于存在于一个而不是两个Dataframe中的其他列,将创建缺少的值。

最后,如果您通过

sort=True
,则按字母数字顺序对列进行排序。如果
sort=False
第二个Dafaframe的列不在第一列中,则它们将不进行排序地附加到末尾:

df1 = pd.Dataframe({"a": [1, 2], "b": [0, 8], 'e':[5, 0]},          columns=['b', 'a','e'])df2 = pd.Dataframe({"a": [4, 5], "b": [7, 3], 'c':[2, 8], 'd':[7, 0]},          columns=['c','b','a','d'])print (pd.concat([df1, df2]))

FutureWarning:排序,因为未连接的轴未对齐。

   a  b    c    d    e0  1  0  NaN  NaN  5.01  2  8  NaN  NaN  0.00  4  7  2.0  7.0  NaN1  5  3  8.0  0.0  NaNprint (pd.concat([df1, df2], sort=True))   a  b    c    d    e0  1  0  NaN  NaN  5.01  2  8  NaN  NaN  0.00  4  7  2.0  7.0  NaN1  5  3  8.0  0.0  NaNprint (pd.concat([df1, df2], sort=False))   b  a    e    c    d0  0  1  5.0  NaN  NaN1  8  2  0.0  NaN  NaN0  7  4  NaN  2.0  7.01  3  5  NaN  8.0  0.0

在您的代码中:

placement_by_video_summary = placement_by_video_summary.drop(placement_by_video_summary_new.index).append(placement_by_video_summary_new, sort=True).sort_index()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号