2016-10-28 3 views
1

Я пытаюсь сравнить list и dataframe. Если значение item в list равно значению из первого столбца в dataframe's row, я хотел бы распечатать его после list's item.Найти последнюю строку в Dataframe: Pandon pandas module

Если в list нет items не соответствует ни одному items во втором столбце dataframe's, я хотел бы просто распечатать list's item. Я подумал, что хороший способ пойти по этому поводу - перебрать все list и dataframe, и если мы дойдем до последней строки dataframe и не с позиции, распечатайте только list's item вместо list's item плюс dataframe's second column.

Мне нужна помощь в определении синтаксиса, необходимого для поиска последней строки в фрейме данных. См. Мой код ниже.

Информационный кадр, который я использую, - 1003 rows X 2 columns. Ярлыки строк - это цифры 0-1002. Метки столбцов col1 и col2

#compare items from List against items from dataframe to find matches 
for item in List: 
    for idx, row in df.iterrows(): 
     if item in row['col1']: 
      print str(count) + " " + str(item) + " " + str(row['col2']) 
      count=count+1 

     #if it's the last row in dataframe: 
      if item not in row['col1']: 
       print str(count) + " " + str(item) 
+1

Просьба представить данные выборки и ожидаемые результаты. См. Http://stackoverflow.com/help/mcve и [Как сделать хорошие воспроизводимые примеры pandas] (http://stackoverflow.com/a/20159305/3339965). – root

ответ

1
#compare items from List against items from dataframe to find matches 
for item in List: 
    last_idx = df.iloc[-1].name 
    for idx, row in df.iterrows(): 
     if item in row['col1']: 
      print str(count) + " " + str(item) + " " + str(row['col2']) 
      count=count+1 

     if last_idx == idx: 
      if item not in row['col1']: 
       print str(count) + " " + str(item) 

считают df

df = pd.DataFrame(np.arange(16).reshape(-1, 4), 
        pd.MultiIndex.from_product([list('XY'), [2, 5]]), 
        list('ABCD')) 

df 

enter image description here

последний индекс

df.iloc[-1].name 

('Y', 5) 

демо

for idx, row in df.iterrows(): 
    last_idx = df.iloc[-1].name 
    if last_idx == idx: 
     print(row) 

A 12 
B 13 
C 14 
D 15 
Name: (Y, 5), dtype: int64 
0

Я узнал, что я мог бы использовать следующую строку, чтобы найти последнюю строку в dataframe

if count==len(df):