2016-08-02 65 views
2

在熊猫中,是否可以引用函数的行号。我不是在谈论.iloc。取决于行号的函数

iloc需要一个位置,即一个行号并返回一个数据帧值。

我想访问数据框中的位置编号。

例如,如果函数位于向下3行和2列的单元格中,我想要一种方法来返回整数3.不是位于该位置的条目。

谢谢。

+0

你可以给一个实际的DataFrame的例子吗? –

+0

这可能有用吗? http://stackoverflow.com/questions/18199288/getting-the-integer-index-of-a-pandas-dataframe-row-fulfilling-a-condition –

+1

我想你需要['get_loc'](http:// pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.get_loc.html) – jezrael

回答

1

考虑数据框df

df = pd.DataFrame([[1, 2], [3, 4]], ['a', 'b'], ['c', 'd']) 

df 

enter image description here

和行row

row = df.ix['a'] 

row 

c 1 
d 2 
Name: a, dtype: int64 

没有任何关于该行表示,这是中df第一行。这些信息实质上是失去了......有点。

您可以@ jezrael的建议,使用get_loc

df.index.get_loc(row.name) 

0 

但是这仅适用,如果你的指数是唯一的。

你唯一的选择是在你得到它时跟踪它的位置。要做到这一点,最好的办法是:

df.iterrows()

for i, (idx, row) in enumerate(df.iterrows()): 
    print "row position: {:>3d}\nindex value: {:>4s}".format(i, idx) 
    print row, '\n' 

row position: 0 
index value: a 
c 1 
d 2 
Name: a, dtype: int64 

row position: 1 
index value: b 
c 3 
d 4 
Name: b, dtype: int64 
0

对不起,我想不出我的手机上添加的代码示例,但林使用enumerate。当他说信息丢失时,piRSquared证实了我的恐惧。我想不应该每次都做一个循环,或者添加一个包含数字的列(如果我对它们进行排序,这些列将被打乱:/)。

谢谢大家。