python - 尽管调用单个索引,Pandas .loc[] 方法仅返回 DataType 而不是 Series

标签 python pandas

TL;DR: .loc[] 始终返回 DataFrame 类型。即使指定单个索引。

我已经尝试了一切。这让我发疯。

我似乎无法在其他地方重现它。

我已经检查了正在传递的每种数据类型。一切都是它应该的样子。但无论我将什么传递到 .loc[] 中,它都会返回一个 DataFrame 而不是系列。

import numpy as np
import pandas as pd
import datetime


index_list = 'A B C D E F G H'.split()
df = pd.DataFrame(data=None,index=index_list)

k = 0
while k <= 2:
    now = datetime.datetime.now().strftime('%H:%M:%S')
    df.loc[:,now] = 1

    for i in index_list:
        print(df.loc[i])
        print(type(df.loc[i]))
    k += 1

上面的代码运行时会出现 0 个错误,并返回 Series 类型的数据。 这是经过蒸馏的代码,但与真实代码完全相同。相同的流程,传递的数据类型完全相同。

  1. “now”设置为列名称,每个索引的所有新值现在均为 1。
  2. 接下来,脚本迭代索引列表并打印类型。

问题是在真实的脚本中.loc只会返回DataFrame类型而不是Series。我不知道为什么。我什至尝试手动输入 .loc 索引名称来检查是否传递了错误类型的数据。仍然返回DataFrame。

我 100% 不知道自己可能做错了什么。

也许你们中的一些人有想法?

编辑

删除了原来的代码。

我发现如果我打电话 打印(df.loc[i].iloc[0]) 它将返回该列的系列数据。

print(type(df.loc[i].iloc[0]))

将打印:

20:48:48    1
Name: (A,), dtype: int64
<class 'pandas.core.series.Series'>

为什么名称 (A,) 是一个元组?

最佳答案

TLDR:在构建 dfCoinMaster 索引时删除多余的括号。

在工作代码中:

df = pd.DataFrame(data=None,index=index_list)

在非工作代码中:

dfCoinMaster = pd.DataFrame(data=None,index=[current_coin_listings])

您正在添加额外的列表嵌套级别,您可以在您的列表中看到

Name: (A,), dtype: int64

线。您可以通过在测试中添加额外的括号来重现相同的行为:

In [28]: df = pd.DataFrame(data=None, index=[index_list])

In [29]: df.loc[:, 'test'] = 10

In [30]: df
Out[30]: 
   test
A    10
B    10
C    10
D    10
E    10
F    10
G    10
H    10

In [31]: df.loc['A']
Out[31]: 
   test
A    10

In [32]: type(_)
Out[32]: pandas.core.frame.DataFrame

但是:

In [33]: df.loc[('A',)]
Out[33]: 
test    10
Name: (A,), dtype: int64

In [34]: type(_)
Out[34]: pandas.core.series.Series

关于python - 尽管调用单个索引,Pandas .loc[] 方法仅返回 DataType 而不是 Series,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51407524/

相关文章:

python - numpy distutils——尝试编译一些东西并在失败时设置标志

python - Youtube API每个请求或错误返回1个视频

python - VSCode Python 交互式窗口 - 如何停止 Jupyter 服务器?

python - 我的 Pyramid 应用程序中的严重缺陷

python - 如何确定方法中引用了哪些自属性?

python - 使用 Numpy 数组更新 Pandas 数据框中的部分列

python - 如何在 Python 中获取列表并填充值并放入数据框和过滤器中?

python - Pandas 数据框中元素和子集的总长度

python - 通过将不同数据帧中具有相同索引的两列相乘来添加新列

python - 如何计算每个季节有多少天的答案等于 pandas 数据框中的不同数字?