Фильтр Pandas DataFrame - PullRequest
       3

Фильтр Pandas DataFrame

0 голосов
/ 01 октября 2018

Мой вопрос касается команды pandas.DataFrame.filter.Кажется, что pandas создает копию фрейма данных для записи любых изменений.Как я могу записать данные на сам фрейм данных?

Другими словами:

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.filter(regex='col1').iloc[0]=10

Вывод:

   col1  col2
0     1     3
1     2     4

Желаемый вывод:

   col1  col2
0    10     3
1     2     4

1 Ответ

0 голосов
/ 01 октября 2018

Я думаю, вам нужно извлечь имена столбцов, а затем использовать функции loc или iloc:

cols = df.filter(regex='col1').columns 
df.loc[0, cols]=10

Или:

df.iloc[0, df.columns.get_indexer(cols)] = 10

print (df)
   col1  col2
0    10     3
1     2     4

Вы не можете использовать функцию filter,потому что подмножество возвращает Series / DataFrame, который может иметь свои данные в качестве представления.Вот почему SettingWithCopyWarning возможен там (или повышается, если вы установите опцию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...