Есть ли способ отобразить массив NumPy на определенный фрейм данных? - PullRequest
1 голос
/ 04 ноября 2019

У меня есть DataFrame, скажем:

#d = {'col1': [1, 2, 3], 'col2': [3, 4, 5]} // that's what the data might look like
df = pd.DataFrame(data=d)

, и у меня есть массив np с [0, 2].

Теперь я хочу добавить столбец в DataFrame, где естьравен 1, когда индекс строки находится в массиве np, в противном случае - 0.

У кого-нибудь есть идея?

1 Ответ

3 голосов
/ 04 ноября 2019

Используйте Index.isin с приведенной маской к целым числам:

d = {'col1': [1, 2, 3], 'col2': [3, 4, 5]} 
df = pd.DataFrame(data=d)

a = np.array([0, 2])

df['new'] = df.index.isin(a).astype(int)
#alternative
#df['new'] = np.in1d(df.index, a).astype(int)

Или используйте numpy.where:

df['new'] = np.where(df.index.isin(a), 1, 0)
#alternative
#df['new'] = np.where(np.in1d(df.index, a), 1, 0)

print (df)
   col1  col2  new
0     1     3    1
1     2     4    0
2     3     5    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...