присвоение нескольких значений различным ячейкам в кадре данных - PullRequest
0 голосов
/ 12 февраля 2019

Это, вероятно, простой вопрос, но я не мог найти простой способ сделать это.Представьте себе следующий фрейм данных:

df = pd.DataFrame(index=range(10), columns=range(5))

и три списка, которые содержат индексы, столбцы и значения определенного фрейма данных, которые я намерен изменить:

idx_list = [1,5,3,7]  # the indices of the cells that I want to change
col_list = [1,4,3,1]  # the columns of the cells that I want to change
value_list = [9,8,7,6]  # the final value of whose cells`

Мне было интересно, существуют ли онифункция в pandas, которая эффективно выполняет следующее:

for i in range(len(idx_list)):
    df.loc[idx_list[i], col_list[i]] = value_list[i] 

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Использование .values

df.values[idx_list,col_list]=value_list
df
Out[205]: 
     0    1    2    3    4
0  NaN  NaN  NaN  NaN  NaN
1  NaN    9  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN    7  NaN
4  NaN  NaN  NaN  NaN  NaN
5  NaN  NaN  NaN  NaN    8
6  NaN  NaN  NaN  NaN  NaN
7  NaN    6  NaN  NaN  NaN
8  NaN  NaN  NaN  NaN  NaN
9  NaN  NaN  NaN  NaN  NaN

Или другой способ менее эффективный

updatedf=pd.Series(value_list,index=pd.MultiIndex.from_arrays([idx_list,col_list])).unstack()
df.update(updatedf)
0 голосов
/ 12 февраля 2019

попробуйте функцию df.applymap (), вы можете использовать лямбду для выполнения необходимых операций.

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