Обновить значение столбца Dataframe на основе другого значения столбца Dataframe

У меня есть pandas Dataframe с парой столбцов. Я хочу получить первые 3 элемента из столбца информации на основе значения в протоколе.

Например: мне нужны первые 3 элемента в информации, если протокол TCP.

Используя приведенный ниже код, я могу разделить столбцы, необходимые для моей работы. Но я понятия не имею, как адаптировать следующий фрагмент кода к этому.

chunk[['Protocol', 'Information']] = chunk[['Protocol', 'Information']]

Обновлено:

Я хочу обновить значения. Не разделять их.

Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать этот пост на как предоставить отличный пример панд, а также как предоставить минимальный, полный и проверяемый пример и соответствующим образом изменить свой вопрос. Эти советы по как задать хороший вопрос также могут быть полезны.

jezrael 29.05.2019 13:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
417
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать что-то вроде этого:

import pandas

data = data = {'Name':['first', 'second', 'third', 'fourth'],
        'Age':[27, 27, 22, 32],
        'Address':['New York', 'ABC', 'XYZ', 'Nowhere'],
        'Qualification':['Msc', 'MA', 'MA', 'Phd']}

# Make a dataframe object
df = pandas.DataFrame(data)

# Your condition
# for example we want to get the rows with `Qualitication=='MA'
is_MA_qualified = df['Qualification'] == 'MA'

# Now to filter your data
MA_qualified = df[is_MA_qualified]

# You can use `head(n)` to get first three rows
first_three_MA_qualified = MA_qualified.head(3)

# And finally, to get any desired columns
first_three_MA_qualified[['Age','Address']]

ОБНОВИТЬ: чтобы обновить ячейки, вы можете перебирать строки, а затем изменять значения ячеек, которые удовлетворяют условию:

...
for index, row in df.iterrows():
    if row['Age'] >= 18:
        df.at[index, 'Qualification'] = 'Verified'

Спасибо. Но не совсем то, что я ищу. Я не хочу разделять данные, я хочу их обновить. Может быть, мой вопрос был недостаточно точен.

user11509642 29.05.2019 13:29
Ответ принят как подходящий

Мне удалось обновить значения на основе заданного значения:

chunk.loc[chunk['Protocol'] == tcp, 'Information'] = 5

Но сейчас я просто меняю значение на число 5. Я бы предпочел использовать лямбда-выражение или функцию, чтобы получить первые три элемента и сохранить только эти значения.

Другие вопросы по теме