Как добавить новый столбец с длиной значений и пользовательского запуска? - PullRequest
0 голосов
/ 01 октября 2019

Есть 2 кадра данных

df1 и df2

df1 =

A   B
111 222
222 5555

df2 =

C   counter_2
333 100
777 25

Мне нужно добавить "counter" столбца в df1, он должен быть как индекс, возвращать положение элементов столбца.

Примерно так:

df1['counter'] = range(len(df1))

A   B   counter
111 222       1
222 555       2

Но мне нужно изменить начальную точку, это должно быть максимальное число из столбца df2 "counter".

df2['counter_2'].max() # 100

Таким образом, мой желаемый вывод выглядит так:

A   B   counter
111 222       101
222 555       102

Я погуглил, но не могу найти решение.

Ответы [ 3 ]

1 голос
/ 01 октября 2019
# First, compute the starting point
start_point = df2['counter_2'].max() + 1

# Now, assign a range of numbers to the 'counter' column of df1
df1['counter'] = list(range(start_point, start_point + len(df1)))
1 голос
/ 01 октября 2019

когда мы создаем фрейм данных, у него есть индекс по умолчанию, который вы не показываете выше. Если вы указали в качестве индекса другой столбец, вам нужно будет сбросить его, а затем добавить новый столбец, содержащий сумму максимального значения counter2 и индекса, например:

 max_value = df2['counter_2'].max()     
 df1 = df1.reset_index()
 df1['counter'] = df1.index+max_value
 print(df1.head())

также используйте значимые имена для столбцов и фрейма данных. Спасибо.

1 голос
/ 01 октября 2019
import numpy as np
df1['counter'] = np.arange(df2['counter_2'].max(), len(df1) + 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...