Pandas扩展DataFrame与Series的方法差异困惑及原因咨询
Pandas中Series与DataFrame扩展方法的差异疑问
我已查阅过类似问题的各种解答,但仍未明确Pandas中Series与DataFrame的扩展方法存在差异的原因。此外,部分Pandas文档不够清晰,例如Series.reindex的文档中,示例突然切换为DataFrame的用法,但两者函数并非完全一致。
DataFrame的扩展操作示例
首先构建一个DataFrame:
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(6,4), index=range(6), columns=list('ABCD')) df
输出:
A B C D 0 0.136833 -0.974500 1.708944 0.435174 1 -0.357955 -0.775882 -0.208945 0.120617 2 -0.002479 0.508927 -0.826698 -0.904927 3 1.955611 -0.558453 -0.476321 1.043139 4 -0.399369 -0.361136 -0.096981 0.092468 5 -0.130769 -0.075684 0.788455 1.640398
添加新列时,可通过两种简单方式实现:
df[['X','Y']] = (99,-99) # 或者使用loc df.loc[:,['X','Y']] = (99,-99) df
输出:
A B C D X Y 0 0.858615 -0.552171 1.225210 -1.700594 99 -99 1 1.062435 -1.917314 1.160043 -0.058348 99 -99 2 0.023910 1.262706 -1.924022 -0.625969 99 -99 3 1.794365 0.146491 -0.103081 0.731110 99 -99 4 -1.163691 1.429924 -0.194034 0.407508 99 -99 5 0.444909 -0.905060 0.983487 -4.149244 99 -99
Series的扩展操作问题
我计划通过循环构建Series列表最终转为DataFrame,因此希望先以Series处理每一行以简化开发,但尝试相同操作时遇到阻碍:
首先构建一个Series:
ss = pd.Series(np.random.randn(4), index=list('ABCD')) ss
输出:
A 0.078013 B 1.707052 C -0.177543 D -1.072017 dtype: float64
尝试批量添加新索引并赋值时报错:
ss['X','Y'] = (99,-99) # 以下两种方式同样报错 # ss[['X','Y']] = (99,-99) # ss.loc[['X','Y']] = (99,-99)
报错信息:
KeyError: "None of [Index(['X', 'Y'], dtype='object')] are in the [index]"
仅能通过逐个赋值的方式实现:
ss['X'],ss['Y'] = (99,-99) ss
输出:
A 0.078013 B 1.707052 C -0.177543 D -1.072017 X 99.000000 Y -99.000000 dtype: float64
我曾考虑先重新索引Series再赋值,但修改索引时遇到长度不匹配问题:
ss = pd.Series(np.random.randn(4), index=list('ABCD'), name='z') xs = pd.Series([99,-99], index=['X','Y'], name='z') # 可以合并索引,但无法直接赋值给现有Series的索引 ss.index.append(xs.index) # 输出 Index(['A', 'B', 'C', 'D', 'X', 'Y'], dtype='object') ss.index = ss.index.append(xs.index)
报错信息:
ValueError: Length mismatch: Expected axis has 4 elements, new values have 6 elements
请问需要如何理解为何DataFrame的等效方法可行,而Series的方法不可行?这导致我无法动态为现有Series添加新索引并赋值,操作较为繁琐。
内容的提问来源于stack exchange,提问作者JohnT
相关产品推荐
相关产品推荐

