Я получил файл для обработки.Похоже:
1 0 2 3
0 name1 sample1 typeA1 type1
1 name2 sample2 typeA2 type2
2 name3 sample3 typeA3 type3
3 name4 sample4 typeA4 type4
В typeA
и type
столбцах я получил несколько значений.'A', 'B', 'C' или 'D'.
Что я хочу сделать:
Нужно изменить столбцы typeA и type на основе их значений.Пример:
if in typeA[0] is 'D' and in type[0] = 'D'
затем typeA[0] = 'Z' and type[0] = Y
if in typeA[0] is 'A' and in type[0] = 'C'
, затем typeA[0] = 'Z' and type[0] = Z
... и т. Д.
Я написал, если ещеЗаявление и положить его в цикл, код выглядит так:
for n in range(df.shape[0]):
if df.iloc[n,2] == 'D' and df.iloc[n,3] == 'D':
df.iloc[n,2] = 'Z'
df.iloc[n,3] = 'Y'
elif .... etc.
У меня есть вопросы:
** Существуют самые простые способы сделать это, используя только панд? **
Я нашел пример, подобный этому:
data.loc[data.bidder == 'parakeet2004', 'bidderrate'] = 100
Где автор изменяет все значения bidderrate's
col на 100
, когда в bidder col
указано значение "parakeet2004"
.Без какого-либо цикла он меняет 3 строки в этом случае.
Я пытался сделать это (по-разному) для столбца с двойным оператором, как в моем случае, но я получил только Key Error.Возможно ли даже для большего количества условий?
И если кто-то может объяснить мне, помимо основного вопроса: в моем случае в моем цикле я работаю с копией фреймов данных или с исходным объектом? **
Если это копия, что я должен сделать, чтобы работать с исходным объектом (я бы не стал тратить впустую память)?
Я нашел несколько похожих вопросов по SO, но никто не может решить мою проблему: C
.head () моего DF:
1 0 2 3
0 Adac44402 samp1 C D
1 Adac44402 samp341 A D
2 Adac44402 samp2341 A C
3 Adac44402 samp221 C B
4 Adac44402 samp112 C D