df.iloc [1] .ColumnName返回整行,而不是一个特定的值?

时间:2017-01-29 18:16:40

标签: python pandas dataframe

概述
我试图获取我的代码列(T)的值,并将其用于文件名。

方法
我使用df.iloc [1] .T和列名来捕获一个特定值,然后我想获取该值并与另一个字符串连接以创建文件路径。

问题
df.iloc [1] .T给了我整行而不仅仅是一个值。

print(df2.iloc[1].T)            
Unnamed: 0              1
D              2010-12-01
T                    tvix
O                   99.98
H                  100.69
L                    98.8
C                  100.69
V                       0
AC            2.51725e+06
Y                    2010
dow                     3
M                      12
W                      48
Name: 1, dtype: object

我期待得到“tvix”。现在,当我打印任何其他列时,我得到一个值,例如

print(df2.iloc[1].D)
print(df2.iloc[1].H)
print(df2.iloc[1].L)

2010-12-01
100.689997
98.799998                                   

按预期打印日期,高和低。现在,代码栏(T)和所有其他代码之间的区别在于,股票代码列对于每一行都具有相同的值(我有这种方式用于groupBy目的)

print(df2.head())
   Unnamed: 0           D     T           O           H           L  \
0           0  2010-11-30  tvix  106.269997  112.349997  104.389997
1           1  2010-12-01  tvix   99.979997  100.689997   98.799998
2           2  2010-12-02  tvix   98.309998   98.309998   86.499998
3           3  2010-12-03  tvix   88.359998   88.359998   78.119998
4           4  2010-12-06  tvix   79.769998   79.999998   74.619998

我假设由于T列一直有相同的值,这就是我遇到这个问题的原因。对此的任何意见将不胜感激。

2 个答案:

答案 0 :(得分:3)

通过.column_name访问列有点问题(索引相同)。它并不总是有效(当列名具有空格时,当它是数字或类似情况时,当方法或属性具有相同名称时)。 .T用于转置DataFrame,因此您应该使用括号:

df.iloc[1]['T']

答案 1 :(得分:3)

您可以在iloc[]

中指定列
df.iloc[1,2]

这会让你'tvix'

或者您可以将混合索引与.ix[]

一起使用
df.ix[1,'T']