0
0 комментариев

есть таблица:

import pandas as pd
 
tf = pd.DataFrame(data={"A": (1, 2, 3, 4, 5),
                       "B": 0,
                       "C": ("data", "boo", "lala", "lala", "foo")})

получаем выборку

tf[tf.C=='lala']
   A   B     C
2  3   0  lala
3  4   0  lala

имея этот срез, хочется изменять в нем значения так чтобы менялся основной DataFrame.
Так: tf[tf.C==’lala’].ix[0, 1] = 20 не работает.

update:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
в итоге решено сделать так:

# получить срез
tmp = tf.loc[tf.C=='lala']
# пройтись по индексу
for ind in tmp.index:
    # присвоить значение в основном DataFrame
    tf.loc[ind,"B"] = calculate(tf.loc[ind].values)

для моего случая, это приемлемо.


Добавить комментарий