2015-11-26 2 views
0

Я хотел бы изменить значение в кадре данных, обратившись к строкам с помощью целочисленной индексации (используя iloc) и обращаясь к столбцам с помощью индексации местоположения (используя loc).Pandas dataframes: Объединение местоположения и целочисленное индексирование

Есть ли способ комбинировать эти два метода? Я считаю, что это будет то же самое, что сказать: мне нужна 320-я строка этого фрейма данных и столбец с названием «columnTitle». Это возможно?

+3

Извините, вы после 'df ['column Title']. Iloc [319] = some_val'? – EdChum

ответ

1

IIUC вы можете позвонить iloc непосредственно на колонке:

In [193]: 
df = pd.DataFrame(columns=list('abc'), data = np.random.randn(5,3)) 
df 

Out[193]: 
      a   b   c 
0 -0.810747 0.898848 -0.374113 
1 0.550121 0.934072 -1.117936 
2 -2.113217 0.131204 -0.048545 
3 1.674282 -0.611887 0.696550 
4 -0.076561 0.331289 -0.238261 

In [194]: 
df['b'].iloc[3] = 0 
df 

Out[194]: 
      a   b   c 
0 -0.810747 0.898848 -0.374113 
1 0.550121 0.934072 -1.117936 
2 -2.113217 0.131204 -0.048545 
3 1.674282 0.000000 0.696550 
4 -0.076561 0.331289 -0.238261 
1

Mixed целое и этикетки на основе доступа поддерживается ix.

df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC')) 
>>> df 
      A   B   C 
0 -0.473002 0.400249 0.332440 
1 -1.291438 0.042443 0.001893 
2 0.294902 0.927790 0.999090 
3 1.415020 0.428405 -0.291283 
4 -0.195136 -0.400629 0.079696 

>>> df.ix[[0, 3, 4], ['B', 'C']] 
      B   C 
0 0.400249 0.332440 
3 0.428405 -0.291283 
4 -0.400629 0.079696 

df.ix[[0, 3, 4], ['B', 'C']] = 0 

>>> df 
      A   B   C 
0 -0.473002 0.000000 0.000000 
1 -1.291438 0.042443 0.001893 
2 0.294902 0.927790 0.999090 
3 1.415020 0.000000 0.000000 
4 -0.195136 0.000000 0.000000 
Смежные вопросы