как изменить столбец данных в пандах? [Дубликат]

Этот запрос должен работать:

$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

Проблема заключается в одинарных кавычках, поэтому ваш запрос завершается с ошибкой и возвращает FALSE, и цикл WHILE не может выполняться. Использование% позволяет сопоставлять любые результаты, содержащие вашу строку (например, SomeText- $ username-SomeText).

Это просто ответ на ваш вопрос, вы должны реализовать материал, упомянутый в других сообщениях: обработка ошибок , используйте escape-строки (пользователи могут вводить что-либо в поле, и вы ДОЛЖНЫ убедиться, что это не произвольный код), используйте PDO вместо mysql_connect, который теперь лишен.

15
задан Anton Protopopov 18 November 2015 в 21:39
поделиться

6 ответов

Наткнулся на этот вопрос, ища быстрый и минималистский фрагмент, который я мог бы использовать. Пришлось собрать его сам из сообщений выше. Возможно, кому-то это будет полезно:

data_frame_trimmed = data_frame.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
25
ответ дан Adam Owczarczyk 24 August 2018 в 08:38
поделиться

Ниже приведено решение по столбцам с применением pandas:

import numpy as np

def strip_obj(col):
    if col.dtypes == object:
        return (col.astype(str)
                   .str.strip()
                   .replace({'nan': np.nan}))
    return col

df = df.apply(strip_obj, axis=0)

Это преобразует значения в столбцы типа объекта в строку. Следует проявлять осторожность при использовании столбцов смешанного типа. Например, если ваша колонка - это почтовые индексы с 20001 и «21110», вы получите «20001» и «21110».

0
ответ дан Blake 24 August 2018 в 08:38
поделиться

Я нашел следующий код полезным и что-то, что, вероятно, поможет другим. Этот фрагмент позволит вам удалять пробелы в столбце, а также во всем DataFrame, в зависимости от вашего варианта использования.

import pandas as pd

def remove_whitespace(x):
    try:
        # remove spaces inside and outside of string
        x = "".join(x.split())

    except:
        pass
    return x

# Apply remove_whitespace to column only
df.orderId = df.orderId.apply(remove_whitespace)
print(df)


# Apply to remove_whitespace to entire Dataframe
df = df.applymap(remove_whitespace)
print(df)
0
ответ дан FunnyChef 24 August 2018 в 08:38
поделиться

Вы можете использовать метод pandas Series.str.strip(), чтобы сделать это быстро для каждого столбца типа:

>>> data = pd.DataFrame({'values': ['   ABC   ', '   DEF', '  GHI  ']})
>>> data
      values
0     ABC   
1        DEF
2      GHI  

>>> data['values'].str.strip()
0    ABC
1    DEF
2    GHI
Name: values, dtype: object
22
ответ дан jakevdp 24 August 2018 в 08:38
поделиться

«Данные ['values']. str.strip ()« ответ выше не работал для меня, но я нашел простую работу. Я уверен, что есть лучший способ сделать это. Функция str.strip () работает на Series. Таким образом, я преобразовал столбец dataframe в серию, разделил пробел, заменил преобразованный столбец обратно в dataframe. Ниже приведен пример кода.

import pandas as pd
data = pd.DataFrame({'values': ['   ABC   ', '   DEF', '  GHI  ']})
print ('-----')
print (data)

data['values'].str.strip()
print ('-----')
print (data)

new = pd.Series([])
new = data['values'].str.strip()
data['values'] = new
print ('-----')
print (new)
2
ответ дан S. Herron 24 August 2018 в 08:38
поделиться

Когда вы вызываете pandas.read_csv, вы можете использовать регулярное выражение, которое соответствует нулевому или более пробелам, за которым следует запятая, а в качестве разделителя - ноль или более пробелов.

Например, здесь "data.csv" :

In [19]: !cat data.csv
1.5, aaa,  bbb ,  ddd     , 10 ,  XXX   
2.5, eee, fff  ,       ggg, 20 ,     YYY

(Первая строка заканчивается тремя пробелами после XXX, а вторая строка заканчивается последним Y.)

Следующие использует pandas.read_csv() для чтения файлов с регулярным выражением ' *, *' в качестве разделителя. (Использование регулярного выражения в качестве разделителя доступно только в механизме «python» read_csv().)

In [20]: import pandas as pd

In [21]: df = pd.read_csv('data.csv', header=None, delimiter=' *, *', engine='python')

In [22]: df
Out[22]: 
     0    1    2    3   4    5
0  1.5  aaa  bbb  ddd  10  XXX
1  2.5  eee  fff  ggg  20  YYY
3
ответ дан Warren Weckesser 24 August 2018 в 08:38
поделиться
Другие вопросы по тегам:

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