user12760087
user12760087

Reputation:

Is there any function to create pairing of values from columns in pandas

I have to make the pairing of values in particular column like 3 2 2 4 2 2 to [3,2][2,2][2,4][4,2][2,2] in whole of the data set.

Expected output

[[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]] Every row in separate columns like Pair 1 , Pair 2 ,Pair 3 ....

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

df = ([content], columns=['V2','V3','V4','V5','V6','V7']) def get_pairs(x): arr = x.split(' ') return list(map(list, zip(arr,arr[1:])))

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

Upvotes: 0

Views: 670

Answers (1)

Chris Adams
Chris Adams

Reputation: 18647

IIUC, you can use list comprehension and 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'])]

or alternatively using map and list constructor:

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

[out]

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

Or if this is how your data is structured you could use applymap with your own function:

# 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]]

Upvotes: 2

Related Questions