Как проверить, существует ли значение в другом фрейме данных в пандах? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть датафрейм ниже, который содержит отображение между французским и английским

df1 

french english
ksjks  an
sjk    def
ssad   sdsd

И другие столбцы данных на французском языке, поэтому необходимо преобразовать их в английский с помощью df1

.
df2

ksjks sjk ssad
2     4    6

как мы можем этого достичь?

new_cols = []
for col in df2.columns:
    if col in df1['french']:
             how to get corresponding english value

PS: только что поместили случайные данные для выборки

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018
df_lookup= pd.DataFrame({"French":["ksjks","sjk","ssad"],"english": 
["an","def","sdsd"]})

df_actual=pd.DataFrame({"ksjks":[2],"sjk":[4],"ssad":[6]})

df_actual.columns=[ df_lookup.loc[df_lookup.loc[df_lookup["French"]== 
col].index[0],"english"] for col in df_actual.columns]
0 голосов
/ 05 сентября 2018

Вариант 1
Используйте map с set_index

df2.columns = df2.columns.map(df1.set_index('french').english)
print(df2)

Вариант 2
Используйте rename с set_index:

df2.rename(columns=df1.set_index('french').english.to_dict())

Оба производят:

   an  def  sdsd
0   2    4     6

Порядок столбцов не имеет значения:

df1 = pd.DataFrame({'french': ['un', 'deux', 'trois'], 'english': ['one', 'two', 'three']})
df2 = pd.DataFrame([[1,2,3]], columns=['trois', 'deux', 'un'])

df2.rename(columns=df1.set_index('french').english.to_dict())

   three  two  one
0      1    2    3

df2.columns.map(df1.set_index('french').english)
# Index(['three', 'two', 'one'], dtype='object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...