Панды - Создать дубликаты строк на основе значения столбца, учитывая порог для этого столбца - PullRequest
0 голосов
/ 11 июня 2018

У меня есть этот pandas Dataframe:

A    B     C
20   6     7 
5    3.8   9
34   4     1

Я хочу создать повторяющиеся строки, если значение в A скажет> 10.Таким образом, Датафрейм должен выглядеть следующим образом:

A    B     C
10   6     7
10   6     7
5    3.8   9
10   4     1
10   4     1
10   4     1
4    4     1

Есть ли в пандах способ сделать это элегантно?Или мне придется перебирать строки и делать это вручную ..?Я уже просматривал похожие запросы в StackOverflow, но ни один из них не выполняет именно то, что я хочу.

1 Ответ

0 голосов
/ 11 июня 2018

Использование:

#create default index
df = df.reset_index(drop=True)

#get floor and modulo divisions
a = df['A'] // 10 
b = (df['A'] % 10)

#repeat once if not 0
df2 = df.loc[df.index.repeat(b.ne(0).astype(int))]
#repplace values of A with map by index 
df2['A'] = df2.index.map(b.get)

#repeat with assign scalar 10
df1 = df.loc[df.index.repeat(a)].assign(A=10)

#join together, sort index and create default RangeIndex
df = df1.append(df2).sort_index().reset_index(drop=True)
print (df)
    A    B  C
0  10  6.0  7
1  10  6.0  7
2   5  3.8  9
3  10  4.0  1
4  10  4.0  1
5  10  4.0  1
6   4  4.0  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...