当我对单个元素 DataFrame 对象执行 loc 时,它被转置并转换为 float64 类型。这是要重现的示例代码:
from pandas import read_excel, DataFrame
import pandas as pd
import numpy as np
rowNames = ['Name0', 'Name1', 'Name2', 'Name3']
df = DataFrame(
[[3, 1366.436, 9.0],
[3, 179.090, 14.0],
[1, 322.297, 9.0],
[1, 1604.821, 31.0],
[8, 346.920, 20.0],
[1, 2408.365, 31.0],
[1, 765.352, 9.0],
[1, 2295.521, 26.0],
[8, 636.895, 20.0]],
index=['Name0','Name0','Name1','Name1','Name1','Name2','Name3','Name3','Name3'],
columns=['Layer', 'Length', 'Width']
)
for i in range(len(rowNames)):
print("Name = " + str(rowNames[i]))
nDF = df.loc[rowNames[i]]
print(str(nDF) + "\n")
注意索引“Name2”发生了什么,因为它只有一项:
Name = Name0
Layer Length Width
Name0 3 1366.436 9.0
Name0 3 179.090 14.0
Name = Name1
Layer Length Width
Name1 1 322.297 9.0
Name1 1 1604.821 31.0
Name1 8 346.920 20.0
Name = Name2
Layer 1.000
Length 2408.365
Width 31.000
Name: Name2, dtype: float64
Name = Name3
Layer Length Width
Name3 1 765.352 9.0
Name3 1 2295.521 26.0
Name3 8 636.895 20.0
这会导致代码后面的下游出现混乱。
也许这种转换行为是预期的——但有没有办法覆盖它?
编辑以修复格式......希望它现在看起来更好(列排列了一点)。
人到中年有点甜
繁星coding
相关分类