Заданный фрейм данных df =
ordinal id A B
1 14318 45.0714 7.6187
2 14318 45.0739 7.6195
3 14318 45.0745 7.6152
4 14318 45.0833 7.6145
5 14318 45.0946 7.6194
Я хочу объединить столбцы A и B в столбец C уникальными значениями 'id'. Итак, я попробовал следующий код:
df['C'] = list(zip(df.A.astype(float), df.B.astype(float)))
Здесь тип столбца C является объектом. Но мне нужно float или int. Я имею в виду, мне нужно что-то вроде
([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
Но я получаю:
ordinal id A B C
1 14318 45.0714 7.6187 (45.0714, 7.6187)
2 14318 45.0739 7.6195 (45.0739, 7.6195)
3 14318 45.0745 7.6152 (45.0745, 7.6152)
4 14318 45.0833 7.6145 (45.0833, 7.6145)
ИЗМЕНЕНО
Пожеланная выходная мощность:
id C
14318 ([[45.0714, 7.6187], [45.0739, 7.6195], [45.0745, 7.6152], [45.0833, 7.6145]])
2 ответа
IIUC необходимо:
df['C'] = list(zip(df.A.astype(int), df.B.astype(int)))
print (df)
ordinal id A B C
0 1 14318 45.0714 7.6187 (45, 7)
1 2 14318 45.0739 7.6195 (45, 7)
2 3 14318 45.0745 7.6152 (45, 7)
3 4 14318 45.0833 7.6145 (45, 7)
4 5 14318 45.0946 7.6194 (45, 7)
Если нужны списки:
df['C'] = [list(x) for x in zip(df.A.astype(float), df.B.astype(float))]
#alternative
#df['C'] = list(map(list, zip(df.A.astype(float), df.B.astype(float))))
print (df)
ordinal id A B C
0 1 14318 45.0714 7.6187 [45.0714, 7.6187]
1 2 14318 45.0739 7.6195 [45.0739, 7.6195]
2 3 14318 45.0745 7.6152 [45.0745, 7.6152]
3 4 14318 45.0833 7.6145 [45.0833, 7.6145]
4 5 14318 45.0946 7.6194 [45.0946, 7.6194]
Вы можете использовать метод apply
:
df[['A', 'B']].apply(tuple, axis=1)
0 (45.0714, 7.6187)
1 (45.0739, 7.6195)
2 (45.0745, 7.6152)
3 (45.0833, 7.6145)
4 (45.0946, 7.6194)
Или, чтобы получить кортеж целых:
df[['A', 'B']].apply(lambda x: tuple(map(int, x)), axis=1)
Однако новый тип объекта будет object
, а не float
или int
, поскольку это массив.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.