Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 方法返回序列而不是单元格值_Python_Pandas - Fatal编程技术网

Python 方法返回序列而不是单元格值

Python 方法返回序列而不是单元格值,python,pandas,Python,Pandas,情况:熊猫数据帧的iterrows()行在两种不同的环境中表现不同。在其中一个中,row.get()按预期返回一个值,在另一个中,row.get()本身返回一个序列,这是意外的 问题:是否存在可能导致两个环境之间的以下行为不同的设置/某些配置?我承认在这个例子中并不是所有的信息都存在。我所希望的是,如果出现以下行为,有人可能会认识到这是某种常见模式或设置更改的结果 详情: 在第一个环境中,我通过Pandas的iterrows()方法迭代行。在每一行中,我访问一个给定的属性,如下所示: print

情况:熊猫数据帧的
iterrows()
行在两种不同的环境中表现不同。在其中一个中,
row.get()
按预期返回一个值,在另一个中,
row.get()
本身返回一个序列,这是意外的

问题:是否存在可能导致两个环境之间的以下行为不同的设置/某些配置?我承认在这个例子中并不是所有的信息都存在。我所希望的是,如果出现以下行为,有人可能会认识到这是某种常见模式或设置更改的结果

详情: 在第一个环境中,我通过Pandas的
iterrows()
方法迭代行。在每一行中,我访问一个给定的属性,如下所示:

print(type(row)) # pandas.series.Series

foo_val = row.get('foo', default=None)

print(type(foo_val)) # float
print(foo_val) # 234.23
现在,当我再次在第二个环境中跑步时;
iterrows()
操作返回一个
变量。它看起来很正常,但获取(
row.get()
)每个元素的行为都与以前不同。具体来说,返回值不是int、float、str等,而是一个保留索引的系列,这样:

print(type(row)) # pandas.series.Series

foo_val = row.get('foo', default=None)

print(type(foo_val)) # pandas.series.Series
print(foo_val) 
# foo      234.23
# Name: 0, dtype: object

foo_val_v2 = foo_val.get('foo', default=None)

print(type(foo_val_v2)) # float
print(foo_val_v2) # 234.23
最后的想法: 我似乎记得在某个时候,您可以配置pandas以返回带有行值的索引,但也许我是在想象


我还应该注意,在这两种情况下打印
会得到相同的结果,记录每个列类型、行类型等也是如此。也就是说,我可以断言行类型相同,父数据帧中的列类型相同,每个行元素的类型相同。

。如果我对dataframe进行更彻底的分析,我可能会注意到列名重复

返回序列而不是单个值的原因是,通过远上游的
.rename()
操作,有两列具有相同的名称。因此,Pandas的行为(应该如此)在请求该列值时作为一个系列返回

下面是一个独立的示例

>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

>>> df.rename(columns={'B': 'A'})
   A  A
0  1  4
1  2  5
2  3  6

>>> df['A']
0    1
1    2
2    3
Name: A, dtype: int64

>>> type(df['A'])
<class 'pandas.core.series.Series'>

>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

>>> df = df.rename(columns={'B': 'A'})

>>> df['A']
   A  A
0  1  4
1  2  5
2  3  6

>>> type(df['A'])
<class 'pandas.core.frame.DataFrame'>
数据帧({“A”:[1,2,3],“B”:[4,5,6]}) >>>重命名(列={'B':'A'}) A 0 1 4 1 2 5 2 3 6 >>>df['A'] 0 1 1 2 2 3 名称:A,数据类型:int64 >>>类型(df['A']) >>>df=pd.DataFrame({“A”:[1,2,3],“B”:[4,5,6]}) >>>df=df.rename(列={'B':'A'}) >>>df['A'] A 0 1 4 1 2 5 2 3 6 >>>类型(df['A'])
如果没有一个可复制的例子,任何人都很难提供帮助。熊猫身上的许多错误修复都是通过SO(例如最近),但这需要一些东西来开始。谢谢,我承认这是一个问题,我无法找出繁殖的错误。因此,这可能是一个糟糕的SO帖子。我这样做是因为有人可能认识到这个问题,或者在过去遇到过这个问题。与此同时,我正试图更好地隔离它(但一整天都干了,所以这里有冰雹玛丽)。