Как добавить новую строку в Pandas DataFrame на основе других столбцов?

Запоминание - это преобразование функций в структуры данных. Обычно требуется, чтобы преобразование происходило постепенно и лениво (по запросу данного элемента домена - или «ключ»). В ленивых функциональных языках это ленивое преобразование может происходить автоматически, и, таким образом, мемонирование может быть реализовано без (явных) побочных эффектов.

3
задан Frank AK 28 February 2019 в 03:03
поделиться

1 ответ

Используйте numpy.repeat, чтобы добавить строки, и Series.duplicated, чтобы установить цену.

df2 = pd.DataFrame(df.values.repeat(df.status.eq(0)+1, axis=0), columns=df.columns)
df2.loc[df2.name.duplicated(), 'price'] *= -1
df2

    name age status price
0  frank  12      1   100
1   jack  33      0   190
2   jack  33      0  -190
3    joe  22      1   200

Если вам нужно также замаскировать NaN в столбце возраста, вы можете сделать это с помощью Series.mask.

df2.age.mask(df2.name.duplicated())

0     12
1     33
2    NaN
3     22
Name: age, dtype: object
<час>

Полный код.

df2 = pd.DataFrame(df.values.repeat(df.status.eq(0)+1, axis=0), columns=df.columns)
isdup = df2.name.duplicated()
df2.loc[isdup, 'price'] *= -1
df2['age'] = df2['age'].mask(isdup)

df2
    name  age status price
0  frank   12      1   100
1   jack   33      0   190
2   jack  NaN      0  -190
3    joe   22      1   200
0
ответ дан cs95 28 February 2019 в 03:03
поделиться
Другие вопросы по тегам:

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