Я могу заменить значения в указанном столбце c кадра данных pandas путем итерации по строкам и сопоставить эти значения с соответствующими парами кортежей, содержащимися в списке кортежей.
Однако, когда я запускаю этот код на большом фрейме данных, он становится относительно медленным, поскольку ему приходится перебирать весь список кортежей, чтобы найти соответствие для строки в фрейме данных. (12280it [23:21, 8.66it / s])
Есть ли еще способ pythoni c для сопоставления и замены? Например, индексирование списка кортежей и фрагмента кода, который фильтруется по индексу?
Мой использованный код можно найти ниже.
import pandas as pd
from tqdm import tqdm
# initialize list of lists
data = [['some', 1], ['random', 10], ['stuff', 14],['which',8],['is',22],['irrelevant',24]]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Strings', 'Number'])
df
Strings Number
0 some 1
1 random 10
2 stuff 14
3 which 8
4 is 22
5 irrelevant 24
#Create lists necessary to make tuples
x = list(range(1, 25))
y = list(range(345, 395, 2))
#Create tuple
z = list(zip(x,y))
#Replace number values in dataframe
#With corresponding values from tuple
for index, row in tqdm(df.iterrows()):
for x in z:
if row["Number"] ==x[0]:
df.set_value(index,"Number", int(x[1]))
приводит к
df
Strings Number
0 some 345
1 random 363
2 stuff 371
3 which 359
4 is 387
5 irrelevant 391