在 Pandas 中使用 .loc 将集合插入单元格时出现不一致的行为

Kau*_*k J 7 python pandas

这是一个非常简单的例子

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())
Run Code Online (Sandbox Code Playgroud)

输出

   col1 col2
0    1  {1}
Run Code Online (Sandbox Code Playgroud)

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

Python 3.7.3
熊猫版本:0.23.4

Ser*_*sta 6

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

在第二个任务中,您更新现有列中的单元格。Pandas 没有理由在这里解包任何东西,它会影响到单元格的设置。

老实说,这解释了会发生什么,但并不能证明不同行为背后的基本原理......