Есть ли функция для создания пары значений из столбцов в pandas - PullRequest
0 голосов
/ 22 января 2020

Я должен сделать пару значений в определенном столбце, например, 3 2 2 4 2 2 - [3,2] [2,2] [2,4] [4,2] [2,2] в целом набор данных.

Ожидаемый результат

[[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]] Каждый строка в отдельных столбцах, таких как пара 1, пара 2, пара 3 ....

content = pd.read_csv ('temp2.csv')

df = ([content], columns = ['V2', 'V3', 'V4', 'V5', 'V6', 'V7']) def get_pairs (x): arr = x.split ('') возвращаемый список (map (list, zip ( arr, arr [1:])))

df ['pair'] = df.applymap (get_pairs) df

1 Ответ

2 голосов
/ 22 января 2020

IIU C, вы можете использовать понимание списка и zip:

# Setup
df = pd.DataFrame([3, 2, 2, 4, 2, 2], columns=['col1'])

[[x, y] for x, y in zip(df.loc[:, 'col1'], df.loc[1:, 'col1'])]

или, альтернативно, использовать конструктор map и list:

list(map(list, zip(df.loc[:, 'col1'], df.loc[1:, 'col1'])))

[out ]

[[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]]

Или, если ваши данные структурированы таким образом, вы можете использовать applymap со своей собственной функцией:

# Setup
df = pd.DataFrame(['3 2 2 4 2 2', '1 2 3 4 5 6'], columns=['col1'])

#           col1
# 0  3 2 2 4 2 2
# 1  1 2 3 4 5 6

def get_pairs(x):
    arr = x.split(' ')
    return list(map(list, zip(arr, arr[1:])))

df['pairs'] = df.applymap(get_pairs)

[out ]

          col1                                     pairs
0  3 2 2 4 2 2  [[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]]
1  1 2 3 4 5 6  [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...