Guest User

Untitled

a guest
Dec 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. List Numb Name
  2. 1 1 one
  3. 1 2 two
  4. 2 3 three
  5. 4 4 four
  6. 3 5 five
  7.  
  8. List Numb Name
  9. one 1 one
  10. one 2 two
  11. two 3 three
  12. four 4 four
  13. three 5 five
  14.  
  15. df['List'] = df['List'].map(df.set_index('Numb')['Name'])
  16.  
  17.  
  18. List Numb Name
  19. 0 one 1 one
  20. 1 one 2 two
  21. 2 two 3 three
  22. 3 four 4 four
  23. 4 three 5 five
  24.  
  25. import pandas as pd
  26.  
  27. df = pd.DataFrame({'List': [1, 1, 2, 4, 3], 'Numb': [1, 2, 3, 4, 5], 'Name': ['one', 'two', 'three', 'four', 'five']})
  28.  
  29. d = dict(zip(df['Numb'], df['Name']))
  30. df = df.replace({'List': d})
  31.  
  32. df.rename(columns={"List": "List_numb"}).join(df.set_index("Numb")["Name"].to_frame("List"), on="List_numb")[["List", "Numb", "Name"]]
  33.  
  34. df['List'] = df.set_index('Numb')['Name'].reindex(df['List']).values
  35.  
  36. print(df)
  37.  
  38. List Numb Name
  39. 0 one 1 one
  40. 1 one 2 two
  41. 2 two 3 three
  42. 3 four 4 four
  43. 4 three 5 five
  44.  
  45. import pandas as pd
  46.  
  47. df = pd.DataFrame({
  48. 'List': [1,1,2,4,3],
  49. 'Numb': [1,2,3,4,5],
  50. 'Name':['one','two','three','four','five']
  51. })
  52.  
  53. dfnew = pd.merge(df, df, how='inner', left_on=['List'], right_on=['Numb'])
  54. dfnew = dfnew.rename({'List_x': 'List', 'Numb_x': 'Numb', 'Name_y': 'Name'}, axis='columns')
  55. dfnew = dfnew[['List','Numb','Name']]
  56. dfnew['List'] = dfnew['Name']
  57.  
  58. print (dfnew)
  59. # List Numb Name
  60. #0 one 1 one
  61. #1 one 2 one
  62. #2 two 3 two
  63. #3 four 4 four
  64. #4 three 5 three
  65.  
  66. df['List'] = df['List'].map(pd.Series(df['Name'].values, df['Numb']))
  67.  
  68. >>> df
  69. List Numb Name
  70. 0 1 0 one_0
  71. 1 1 1 two_1
  72. 2 2 2 three_2
  73. 3 4 3 four_3
  74. 4 3 4 five_4
  75. .. ... ... ...
  76. 0 1 4995 one_4995
  77. 1 1 4996 two_4996
  78. 2 2 4997 three_4997
  79. 3 4 4998 four_4998
  80. 4 3 4999 five_4999
  81.  
  82. [5000 rows x 3 columns]
  83.  
  84. # Timings (i5-6200U CPU @ 2.30GHz, but only relative times are interesting)
  85. >>> %timeit df.set_index('Numb')['Name'].reindex(df['List']).values # jpp
  86. 1.24 ms ± 81.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  87. >>> %timeit df['List'].map(df.set_index('Numb')['Name']) # Vaishali
  88. 1.01 ms ± 3.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  89. >>> %timeit df['List'].map(pd.Series(df['Name'].values, df['Numb'])) # timgeb
  90. 427 µs ± 4.33 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Add Comment
Please, Sign In to add comment