Python DataFrame-根据条件从另一个更新一个数据框架列

时间:2019-11-29 22:17:24

标签: python-3.x pandas dataframe

我正在从事一项Data-Science竞赛,并且坚持其中的一个问题,即我必须根据另一个数据帧中的某种条件来更新原始数据帧中的值。 我累了一些代码,但没有运气。 下面是详细信息...

感谢任何建议。

询问是:如果CNT在new_df中大于200,则将“ FIELD_1”列更新为2;当CNT> 100并且<200时为1; CNT <100时为0。

代码:

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']

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"])