TL;DR:.loc[]始终返回数据帧类型。即使在指定单个索引时也是如此。在
我什么都试过了。这让我发疯了。在
我似乎无法在其他地方复制它。在
我已经检查了所有通过的数据。一切都是顺其自然的。但是不管我将什么传入.loc[]它都将返回一个DataFrame而不是series。在
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个错误运行,并返回系列数据类型。 这是经过提炼的代码,但它和真实的代码完全一样。同样的流程,例如相同类型的数据正在传递。在
问题是在真正的脚本中.loc只返回DataFrame类型而不是Series。我不知道为什么。我甚至尝试手动输入.loc索引名来检查是否传递了错误类型的数据。仍然返回数据帧。在
我完全不知道我会做错什么。在
也许你们有些人有想法?在
编辑
删除了原始代码。在
我发现如果我打电话 打印(航向位置[i] .iloc[0]) 它将返回列的序列数据。在
^{pr2}$将打印:
20:48:48 1
Name: (A,), dtype: int64
<class 'pandas.core.series.Series'>
为什么名字(A,)是元组?在
TLDR:在构建dfCoinMaster索引时删除多余的括号。在
在工作守则中:
在非工作代码中:
^{pr2}$您添加了一个额外级别的列表嵌套,可以在
^{3}$行。您可以通过在测试中添加额外的括号来重现相同的行为:
但是:
相关问题 更多 >
编程相关推荐