python - столбец - pandas сводная таблица




python pandas добавить столбец в dataframe из списка (3)

IIUC, если вы сделаете свой (к сожалению, названный) List в ndarray , вы можете просто индексировать его естественно.

>>> m = np.arange(16)*10
>>> m[df.A]
array([  0,  40,  50,  60, 150, 150, 140, 130])
>>> df["D"] = m[df.A]
>>> df
    A   B   C    D
0   0 NaN NaN    0
1   4 NaN NaN   40
2   5 NaN NaN   50
3   6 NaN NaN   60
4  15 NaN NaN  150
5  15 NaN NaN  150
6  14 NaN NaN  140
7  13 NaN NaN  130

Здесь я построил новый m , но если вы используете m = np.asarray(List) , то то же самое должно работать: значения в df.A будут выбирать соответствующие элементы m .

Обратите внимание, что если вы используете старую версию numpy , вам, возможно, придется использовать m[df.A.values] вместо этого - в прошлом, numpy плохо играли с другими, а некоторые рефакторинг в pandas вызывали некоторые головные боли , Теперь ситуация улучшилась.

[РЕДАКТИРОВАТЬ: неправильный предмет / название почтового исправления]

У меня есть dataframe с некоторыми столбцами, как это:

A   B   C  
0   
4
5
6
7
7
6
5

Возможный диапазон значений в A равен только от 0 до 7 .

Кроме того, у меня есть список из 8 элементов:

List=[2,5,6,8,12,16,26,32]  //There are only 8 elements in this list

Если элемент в столбце A равен n , мне нужно вставить n- й элемент из списка в новый столбец, например «D».

Как я могу сделать это за один проход, не зацикливая на весь файл данных?

Результирующий файл данных будет выглядеть так:

A   B   C   D
0           2
4           12
5           16
6           26
7           32
7           32
6           26
5           16

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


Решение, улучшающееся на отличном от @sparrow.

Пусть df , ваш набор данных, и mylist список со значениями, которые вы хотите добавить в dataframe.

Предположим, вы хотите просто вызвать новый столбец, new_column

Сначала сделайте список в серию:

column_values = pd.Series(mylist)

Затем используйте функцию вставки, чтобы добавить столбец. Эта функция имеет то преимущество, что вы можете выбрать, в какой позиции вы хотите поместить столбец. В следующем примере мы разместим новый столбец в первой позиции слева (установив loc = 0)

df.insert(loc=0, column='new_column', value=column_values)

Сначала сделайте список в серию:

se = pd.Series(mylist)

Затем добавьте значения в DataFrame:

df['new_col'] = se.values






dataframe