You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用字典按行更新Pandas DataFrame切片的相关问题咨询

使用字典按行更新Pandas DataFrame切片的相关问题咨询

我正在按行更新pandas.DataFrame的一个切片中的值,让切片的每一行都有唯一值,我使用的是pandas 2.2.3版本。

我找到了一种似乎有效的方法,使用{row_index: row_value}格式的字典(见最小可行示例1)。

我想了解:

  • 示例1中的方法是否可行、为什么可行、具体是如何工作的,以及这是否是解决该问题的合理方式。
  • 使用这种方法是否会有任何意外行为
  • 为什么示例2中的方法无法工作/会引发错误
  • 是否有其他更合适的方法可以实现此目的。

我在Stack Overflow或其他地方都找不到有关这种方法的相关信息。

我的具体用例与示例1略有不同,差异详情列在底部,可能会有相关性。


最小可行示例1(可行)

这里字典的值似乎确实映射到了每个字典键对应的行中

>>> import pandas as pd
>>> df = pd.DataFrame.from_dict({'a': [None, None], 'b': [None, None], 'c': [None, None]})
>>> df.loc[df.index, df.columns] = {0: 1, 1: 2}
>>> df
    a   b   c
0   1   1   1
1   2   2   2

最小可行示例2(不可行)

这里,只是以不同的方式选择整个DataFrame,就会引发错误。

>>> import pandas as pd
>>> df2 = pd.DataFrame.from_dict({'a': [None, None], 'b': [None, None], 'c': [None, None]})
>>> df2.loc[:, :] = {0: 1, 1: 2}
ValueError: setting an array element with a sequence.

类似问题参考

Stack Overflow上有一个类似问题的回答,解释了为什么执行df.iloc[0] = {'a': 1, 'b': 2, 'c': 3}时,字典的键会被映射到行中,这更让人困惑。


我的具体用例细节

我的具体用例与最小可行示例1略有不同:我有一个更大的DataFrame,其中有一些连续的NaN值,因此我是通过df.loc[df_index_subset, df_columns_subset]来更新DataFrame的这个切片/子集,而不是用df.loc[df.index, df.columns]选择整个DataFrame。不过,行为和示例1相同,它会根据字典的键值对按行填充DataFrame的切片。

备注:内容来源于stack exchange,提问作者Ouroboroski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:08:04