Кадр данных панд повторяется каждую строку определенное количество раз - PullRequest
1 голос
/ 27 сентября 2019

У меня есть кадр данных pandas, состоящий из 7 значений:

   Minutiae         LR
0         1   1.975476
1         2   1.082983
2         3   0.269608
3         4   0.878350
4         5   2.820141
5         6   8.686183
6         7  24.340116
7         8  46.475523
8         9  66.139377

Я пытаюсь сделать так, чтобы каждая строка умножалась установленное количество раз, сохраняя оба значения одинаковыми.Например, мелочи 3 на 1129 и 4 на 1085 и т. Д.

До сих пор мне удавалось найти только методы, которые увеличивают количество для каждой строки, но не индивидуально.

Я ценю любые идеина это, спасибо.

1 Ответ

1 голос
/ 27 сентября 2019

Создать словарь для количества повторений для каждого Minute, Series.map, а затем повторить индекс с Index.repeat, последнее использование DataFrame.locдля повторяющихся строк:

print (df)
   Minutiae        LR
0         1  1.975476
1         2  1.082983
2         3  0.269608
3         4  0.878350

d = {1:2, 2:1, 3:5, 4:3}

df1 = df.loc[df.index.repeat(df['Minutiae'].map(d))]
print (df1)
   Minutiae        LR
0         1  1.975476
0         1  1.975476
1         2  1.082983
2         3  0.269608
2         3  0.269608
2         3  0.269608
2         3  0.269608
2         3  0.269608
3         4  0.878350
3         4  0.878350
3         4  0.878350

Сведения :

print (df['Minutiae'].map(d))
0    2
1    1
2    5
3    3
Name: Minutiae, dtype: int64

print (df.index.repeat(df['Minutiae'].map(d)))
Int64Index([0, 0, 1, 2, 2, 2, 2, 2, 3, 3, 3], dtype='int64')

Или создайте новый столбец для повторения:

df['repeat'] = [2,1,5,3]
print (df)
   Minutiae        LR  repeat
0         1  1.975476       2
1         2  1.082983       1
2         3  0.269608       5
3         4  0.878350       3

df2 = df.loc[df.index.repeat(df['repeat'])]
print (df2)
   Minutiae        LR  repeat
0         1  1.975476       2
0         1  1.975476       2
1         2  1.082983       1
2         3  0.269608       5
2         3  0.269608       5
2         3  0.269608       5
2         3  0.269608       5
2         3  0.269608       5
3         4  0.878350       3
3         4  0.878350       3
3         4  0.878350       3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...