我需要用事务df(df2)中多条记录的数据更新主df(df1),其中“id\u number”值在两个帧中都匹配。主列包括静态列和动态列的组合。我想逐列检测值的变化,如果发生变化,用最新的值更新主列,用价数据更新关联的主列。你知道吗
我试图将事务行打包到单个记录中,但如果没有对多个嵌入的if和循环进行旧式编码,就看不到如何做到这一点。你知道吗
...
# Data patterns:
# open master
df_master = pd.DataFrame({'id':['100'], 'date': ['2018'], 'value':['350000'], 'value_valence':['1'], 'lat':['36.608257'], 'lon':['121.812232'], 'age':['34']})
# open transactions
df_transaction = pd.DataFrame({'id':['100'], 'date': ['2019'], 'value':['380000'], 'lat':['36.608257'], 'lon':['-121.812232'], 'age':['35']})
# After update: Master = 100,2019,380000,2,36.608257,-121.812232,35
# sort transactions in id, date order (master is in id order with unique ids and all ids in transaction are in master)
df_transactions = df_transactions.sort_values(by = ['id','date'])
# pseudo:
for i in df_transactions:
if df_master['id'] == df_transaction['id']:
for j in df_transactions.row:
if column(j).value != df_master.column(j):
# update the master column with the new value
df_master.column(j) = df_transactions.column(j)
# update the associated valence column
if df_master.column(j) > df_transactions.column(j):
df_master.column(j+1) = df_master.column(j+1) + 1
else df_master.column(j+1) = df_master.column(j+1) - 1
我知道上面所说的语法是混为一谈的,而且是粗糙的,而iloc、loc、lambda和其他一些我没有完全理解的代码的组合可以更有效地实现这一点。你知道吗
任何帮助都是感激的,即使是'去做tut x'之类的。你知道吗
希望这样能加速我的进步,但在有人插嘴之前,我想出了一个可行的答案:
将事务内部连接到主服务器可以实现矢量化转换。这将生成包含两个文件中的列的行,为每个事务行重复主数据。列名在主列名后面加上了x,在事务列名后面加上了y。你知道吗
我只是对每个列重复上面的第二行,更改逻辑以适应所需的转换。你知道吗
相关问题 更多 >
编程相关推荐