@Deimon74

Нахождение значения в фрейме(или столбце) и при его нахождении добавить дополнительные строки. Как реализовать код в Pandas (Python)?

Есть фрейм:
import pandas as pd
lst = {'Name':['car1', 'car2', 'car3', 'car4'], 'Type':[20, 21, 19, 18], 'Repair':["n", "n", "y", "n"]}
df = pd.DataFrame(lst)
print(df)

Нужно при нахождении значения "y"в нужном столбце добавить еще некоторое кол-во строк(i) с суффиксом "_Bit {i}" но другие столбцы не изменять как в примере.

i in range (0, 16) т.е.

import pandas as pd
lst = {'Name':['car1', 'car2', 'car3','car3','car3','car3', 'car4'], 'Type':[20, 21, 19,19,19,19, 18], 'Repair':["n", "n", "y","y_bit0","y_bit1","y_bit2", "n"]}
df = pd.DataFrame(lst)
print(df)
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 1
@eminsk
программирую на python
import pandas as pd
df = pd.DataFrame({'Name': ['car1', 'car2', 'car3', 'car4'], 'Type': [20, 21, 19, 18], 'Repair': ["n", "n", "y", "n"]})
def add_bit_rows(df):
    y_rows = df[df['Repair'] == 'y']
    bit_rows = [
        {
            'Name': row['Name'],
            'Type': row['Type'],
            'Repair': f"y_bit{i}"
        }
        for _, row in y_rows.iterrows()
        for i in range(16)
    ]
    df_bits = pd.DataFrame(bit_rows)
    return pd.concat([df, df_bits], ignore_index=True)
print(add_bit_rows(df))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы