Начните с установки «id» в качестве индекса, если это еще не сделано.
df = df.set_index('id')
Одна опция для проверки каждой строки использует applymap
, вызывая str.endswith
:
df[df.applymap(lambda x: x.endswith('--')).all(1)]
pattern1 pattern2 pattern3
id
2 a-a-- a-b-- a-c--
3 a-v-- a-m-- a-k--
Другая опция - apply
, вызывая pd.Series.str.endswith
для каждого столбца: [1115 ]
df[df.apply(lambda x: x.str.endswith('--')).all(1)]
pattern1 pattern2 pattern3
id
2 a-a-- a-b-- a-c--
3 a-v-- a-m-- a-k--
И, наконец, для повышения производительности вы можете использовать маски И в пределах понимания списка, используя logical_and.reduce
:
# m = np.logical_and.reduce([df[c].str.endswith('--') for c in df.columns])
m = np.logical_and.reduce([
[x.endswith('--') for x in df[c]] for c in df.columns])
m
# array([False, True, True, False])
df[m]
pattern1 pattern2 pattern3
id
2 a-a-- a-b-- a-c--
3 a-v-- a-m-- a-k--
Если есть другие столбцы, но вы хотите только чтобы рассмотреть те, которые названы "pattern *", вы можете использовать filter
в DataFrame:
u = df.filter(like='pattern')
Теперь повторите описанные выше опции, используя u
, например, первая опция будет
... и т. Д.
Запрос insert или replace вставит новую запись, если id = 1 еще не существует.
Запрос на обновление будет только uudate id = 1, если он уже существует, он не создаст новую запись, если он не существует.
-121--968370-Я использую PIC, но рассмотрю Arduino, если выберу сегодня. Но из ваших целей:
Интересно, лучше ли вам просто взломать ядро Linux?
-121--1286061- Вам нужна функция PQcmdTuples
из libpq
. Который в PHP, например, переносится как pg _ affected _ rows
.
Вы можете использовать предложение RETURNING
:
DELETE FROM table WHERE condition IS TRUE RETURNING *;
После этого вам просто нужно проверить количество возвращаемых строк. Вы можете оптимизировать его с помощью CTE :
WITH deleted AS (DELETE FROM table WHERE condition IS TRUE RETURNING *) SELECT count(*) FROM deleted;
. Это должно вернуть только количество удаленных строк.
Это должно быть просто на Java.
Statement stmt = connection.createStatement();
int rowsAffected = stmt.executeUpdate("delete from your_table");
System.out.println("deleted: " + rowsAffected);
См. java.sql.Statement .