Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- List Numb Name
- 1 1 one
- 1 2 two
- 2 3 three
- 4 4 four
- 3 5 five
- List Numb Name
- one 1 one
- one 2 two
- two 3 three
- four 4 four
- three 5 five
- df['List'] = df['List'].map(df.set_index('Numb')['Name'])
- List Numb Name
- 0 one 1 one
- 1 one 2 two
- 2 two 3 three
- 3 four 4 four
- 4 three 5 five
- import pandas as pd
- df = pd.DataFrame({'List': [1, 1, 2, 4, 3], 'Numb': [1, 2, 3, 4, 5], 'Name': ['one', 'two', 'three', 'four', 'five']})
- d = dict(zip(df['Numb'], df['Name']))
- df = df.replace({'List': d})
- df.rename(columns={"List": "List_numb"}).join(df.set_index("Numb")["Name"].to_frame("List"), on="List_numb")[["List", "Numb", "Name"]]
- df['List'] = df.set_index('Numb')['Name'].reindex(df['List']).values
- print(df)
- List Numb Name
- 0 one 1 one
- 1 one 2 two
- 2 two 3 three
- 3 four 4 four
- 4 three 5 five
- import pandas as pd
- df = pd.DataFrame({
- 'List': [1,1,2,4,3],
- 'Numb': [1,2,3,4,5],
- 'Name':['one','two','three','four','five']
- })
- dfnew = pd.merge(df, df, how='inner', left_on=['List'], right_on=['Numb'])
- dfnew = dfnew.rename({'List_x': 'List', 'Numb_x': 'Numb', 'Name_y': 'Name'}, axis='columns')
- dfnew = dfnew[['List','Numb','Name']]
- dfnew['List'] = dfnew['Name']
- print (dfnew)
- # List Numb Name
- #0 one 1 one
- #1 one 2 one
- #2 two 3 two
- #3 four 4 four
- #4 three 5 three
- df['List'] = df['List'].map(pd.Series(df['Name'].values, df['Numb']))
- >>> df
- List Numb Name
- 0 1 0 one_0
- 1 1 1 two_1
- 2 2 2 three_2
- 3 4 3 four_3
- 4 3 4 five_4
- .. ... ... ...
- 0 1 4995 one_4995
- 1 1 4996 two_4996
- 2 2 4997 three_4997
- 3 4 4998 four_4998
- 4 3 4999 five_4999
- [5000 rows x 3 columns]
- # Timings (i5-6200U CPU @ 2.30GHz, but only relative times are interesting)
- >>> %timeit df.set_index('Numb')['Name'].reindex(df['List']).values # jpp
- 1.24 ms ± 81.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
- >>> %timeit df['List'].map(df.set_index('Numb')['Name']) # Vaishali
- 1.01 ms ± 3.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
- >>> %timeit df['List'].map(pd.Series(df['Name'].values, df['Numb'])) # timgeb
- 427 µs ± 4.33 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Add Comment
Please, Sign In to add comment