gpt4 book ai didi

python - 有时会返回一个数据框而不是一个系列

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:58 25 4
gpt4 key购买 nike

我在一个类中有一个循环结构,它从另一个类中的数据帧检索行。这些行被逐一检索,这意味着它们作为一个系列返回。然后,我对系列​​执行多项操作,然后使用更改更新原始数据帧行。

所有这些在 99% 的情况下都可以正常工作,但在极少数情况下,我得到的不是一个系列,而是一个数据帧。这对我来说毫无意义,因为没有重复项,所以我每次都应该得到一个系列返回给我。这基本上就是我正在做的事情:

class XYZ:
state_df = #create dataframe and populate it

def __init__(self):
pass

def get_state(self, rowname):
return self.state_df.loc[rowname].copy()

def update_state(self, new_symbol_state):
self.state_df.loc[new_symbol_state.name] = new_symbol_state

class ABC:
def __init__(self):
pass

def process():
xyz = MyClass.XYZ()
state_series = xyz.get_state(rowname)
# do stuff with the dataframe row which should be a series
# ie: state_series. Then update the original dataframe row
xyz.update_state(state_series)

就像我说的,99% 的情况下,我都会收到返回给我的系列,我会对它执行一些操作,然后将其发送回原始数据帧,一切都很好。然而,我时不时地得到一个数据框而不是一个毫无意义的系列。即使我打印出数据框,它也显示它只有一行(即:没有重复项),因此它应该是一个系列?

我需要一种方法来确保在调用 state_series = xyz.get_state(rowname) 时始终获得返回给我的 Series。有没有办法确保我总能收到系列作品?或者至少如果我返回的数据帧只有 1 行,那么我如何将其更改为系列。

最佳答案

如果 rowname 是一个 list ,而不是单个元素,

df.loc[rowname] 将返回一个 DataFrame 。示例-

In [14]: df
Out[14]:
A B
0 1 3
1 2 4
2 3 5
3 4 5

In [15]: df.loc[0]
Out[15]:
A 1
B 3
Name: 0, dtype: int64

In [16]: type(df.loc[0])
Out[16]: pandas.core.series.Series

In [17]: df.loc[[0]]
Out[17]:
A B
0 1 3

In [18]: type(df.loc[[0]])
Out[18]: pandas.core.frame.DataFrame

因为,我们无法看到 rowname 来自哪里,我猜这可能是问题所在,您可以检查一下,为什么有时 rowname 会作为列表出现,而不是单个值。

关于python - 有时会返回一个数据框而不是一个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32176542/

25 4 0
文章推荐: python - 实现新闻源的有效方法
文章推荐: c# - 开关语句
文章推荐: c# - 在我的案例中如何提高 SQL 查询性能
文章推荐: html - 如何在 AngularJS 自定义指令中对 Angular 移动父
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com