我正在从事一项Data-Science竞赛,并且坚持其中的一个问题,即我必须根据另一个数据帧中的某种条件来更新原始数据帧中的值。 我累了一些代码,但没有运气。 下面是详细信息...
感谢任何建议。
代码:
df = pd.DataFrame({'FIELD_1': ['f710fca39', '1fd0233cd', '005dd4ce3', '5331f98fb', '005dd4ce3', 'f710fca39', 'eb0004a0b'],
'B': [400 , 500 , 600 , 700 , 800 , 900 , 111]})
new_df = pd.DataFrame({'CNT': [225, 150, 80, 230],'ID': ['f710fca39', '1fd0233cd', '5331f98fb', '005dd4ce3']})
new_df.set_index('ID', inplace= True)
print(df)
print(new_df)
#df.loc[df['FIELD_1'].isin(new_df.index ),'FIELD_1']
答案 0 :(得分:0)
尝试一下
import pandas as pd
import numpy as np
df = pd.DataFrame({'FIELD_1': ['f710fca39', '1fd0233cd', '005dd4ce3', '5331f98fb', '005dd4ce3', 'f710fca39', 'eb0004a0b'],
'B': [400 , 500 , 600 , 700 , 800 , 900 , 111]})
new_df = pd.DataFrame({'CNT': [225, 150, 80, 230],
'ID': ['f710fca39', '1fd0233cd', '5331f98fb', '005dd4ce3']})
df_ = df.copy()
df_=df_.rename(columns={"FIELD_1":"ID"})
mer = pd.merge(df_,new_df,how="left",on=["ID"])
def f(x):
if pd.isnull(x):
return np.nan
elif x>200:
return 1
elif x<100:
return 0
else:
return 2
mer["FIELD_1"]= mer.CNT.apply(lambda x: f(x))
mer=mer.drop(columns=["ID","CNT"])