首页 > 解决方案 > 在 Pandas 中使用 .loc 将集合插入单元格时的行为不一致

问题描述

这是一个非常简单的例子

import pandas
df = pandas.DataFrame()
value_to_be_set = {'1'}

df.loc[0, 'col1'] = value_to_be_set
df['col2'] = None
df.loc[0, 'col2'] = value_to_be_set

print(df.head())

输出

   col1 col2
0    1  {1}

为什么两列的数据类型不同?

Python 3.7.3
熊猫版本:0.23.4

标签: pythonpandas

解决方案


在第一个任务中,您从一个集合中创建一个 num_column,这与可迭代的不同。您要求 1 个单个元素并提供一个大小为 1 的迭代,因此您将集合的内容影响到单个单元格。您可以尝试使用一组 2 个值来查看它会引发错误。

在第二次分配中,您更新现有列中的单元格。Pandas 没有理由在这里打开任何东西,它会影响到单元格的集合。

老实说,这解释了会发生什么,但不能作为不同行为背后的理由的理由......


推荐阅读