Как назначить функцию, которая выбрасывает кортеж в два разных столбца фрейма данных - PullRequest
1 голос
/ 26 февраля 2020

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

Функции просто объединяют координаты ax и y и преобразуют их в другая координата:

plot_shot (x, y)

Я разработал следующий код, который работает, но я ищу более разумное решение, которое позволило бы мне назначить кортеж в lambda для применения строка:

df_shots['temporary'] = df_shots.apply (lambda a: plot_shot(a['x'],a['y'],0,15,-3,'left','bottom'), axis=1)
df_shots['x_converted'] = df_shots['temporary'].apply (lambda x: x[0])
df_shots['y_converted'] = df_shots['temporary'].apply (lambda x: x[1])
df_shots.drop('temporary', axis=1, inplace = True)

Я предполагаю, что это можно сделать в одной строке вместо этой.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вы можете назначить два столбца напрямую с помощью pd.DataFrame:

df = pd.DataFrame({"new":[(1,2),(3,4),(5,6)]})

df[['new1','new2']] = pd.DataFrame(df["new"].values.tolist())

print (df)

      new  new1  new2
0  (1, 2)     1     2
1  (3, 4)     3     4
2  (5, 6)     5     6
0 голосов
/ 26 февраля 2020

Я не тестировал код, но, возможно, некоторые из следующих работ:

Это, вероятно, не будет работать:

df_shots['x_converted'], df_shots['y_converted'] = df_shots.apply (lambda a: plot_shot(a['x'],a['y'], ...), axis=1)

Это, вероятно, делает:

df_shots['x_converted'] = df_shots.apply (lambda a: plot_shot(a['x'],a['y'], ...)[0], axis=1)
df_shots['y_converted'] = df_shots.apply (lambda a: plot_shot(a['x'],a['y'], ...)[1], axis=1)

Извините, нет pandas установка для тестирования ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...