Панды - как выбрать строки, которые содержат определенное значение в нем

ArrayIndexOutOfBoundsException означает, что вы пытаетесь получить доступ к индексу массива, который не существует или не связан с границей этого массива. Индексы массива начинаются с 0 и заканчиваются на длину - 1.

В вашем случае

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}

ArrayIndexOutOfBoundsException происходит, когда вы пытаетесь получить доступ к элементу index.length, который делает не существует (индекс массива заканчивается на -1). просто заменяя & lt; = с & lt; решит эту проблему.

for(int i = 0; i < name.length; i++) {
    System.out.print(name[i] +'\n');  // i goes from 0 to length - 1, Correct
}
1
задан Maksim Ark 25 June 2019 в 19:35
поделиться

3 ответа

Вам нужно к stack кадр данных, так, чтобы можно было использовать str средство доступа на сложенных значениях. Это дает Вам булевскую переменную для каждого значения ячейки кадра данных. unstack это и затем .any(1) seturn, является ли какой-либо элемент Правда, по строке.

df[df.stack().str.contains('--->').unstack().any(1)]

Вывод:

        A   B       C
0   1--->3  2       5
2   6       --->8   4
3           4       2--->
1
ответ дан harvpan 25 June 2019 в 19:35
поделиться

Это, кажется, работает

import pandas as pd

df = pd.DataFrame({'A': ['1--->3', '4', '6', ''], 'B': ['2', '4', '--->8', '4'], 'C': ['5', '0', '4', '2--->']})
print(df)
print('~~~~~~~~~~~~~~~~~~~~~~~')
filtered_df = df[(df['A'].str.contains('--->')) | (df['B'].str.contains('--->')) | (df['C'].str.contains('--->'))]
print(filtered_df)

выход

        A      B      C
0  1--->3      2      5
1       4      4      0
2       6  --->8      4
3              4  2--->
~~~~~~~~~~~~~~~~~~~~~~~
        A      B      C
0  1--->3      2      5
2       6  --->8      4
3              4  2--->
1
ответ дан balderman 25 June 2019 в 19:35
поделиться

Еще один способ сделать это - просто применить функцию с лямбдой

def only_arrow(row):    
    for r in row:
        if "-->" in r:
            return True
    return False

и применить ее к вашему df (это даст вам значения true / false как ряды):

result = df.apply(lambda x : only_arrow(x), axis=1)

0     True
1    False
2     True
3     True

удалить индексы, где это «ложно»

df.drop(result[result==False].index, inplace=True)

результат:

enter image description here

0
ответ дан adhg 25 June 2019 в 19:35
поделиться
  • 1
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 2
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 3
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 4
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 5
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 6
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 7
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 8
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
  • 9
    Хорошо я получил почти ту же проблему прямо сейчас, и Ваш код был очень полезен – MoreThanChaos 26 November 2009 в 07:00
Другие вопросы по тегам:

Похожие вопросы: