[英]Pandas: Merge values from one dataframe to another based on condition
[英]Faster way to get row data (based on a condition) from one dataframe and merge onto another b pandas python
我有两个具有不同索引和长度的数据帧。 如果行匹配相同的股票代码和年份,我想从asset_df的资产列中获取数据。 见下文。
我使用for循环创建了一个简单的实现,但我想有更好的,更快的方法来做到这一点?
Ticker_df
Year Ticker Asset Doc
2011 Fb NaN doc1
2012 Fb NaN doc2
asset_df
Year Ticker Asset
2011 FB 100
2012 FB 200
2013 GOOG 300
ticker_df的理想结果
Year Ticker Asset Doc
2011 Fb 100 doc1
2012 Fb 200 doc2
我的Sucky实施:
for i in ticker_df.Name.index:
c_asset = asset_df[asset_df.tic == ticker_df.Name.ix[i]]
if len(c_asset) > 0:
#This checks to see if there is actually asset data on this company
asset = c_asset[c_asset.fyear == ticker_df.Year.ix[i]]['at']
if len(asset) > 0:
asset = int(asset)
print 'g', asset, type(asset)
ticker_df.asset.ix[i] = asset
continue
else:
ticker_df.asset.ix[i] = np.nan
continue
if len(c_asset) == 0:
ticker_df.asset.ix[i] = np.nan
continue
您可以使用更新方法。 只需首先对齐索引。
In [23]: ticker_df['Ticker'] = ticker_df.Ticker.str.upper()
In [24]: ticker_df = ticker_df.set_index(idx)
In [25]: asset_df = asset_df.set_index(idx)
In [26]: ticker_df.update(asset_df)
In [27]: ticker_df
Out[27]:
Asset Doc
Year Ticker
2011 FB 100 doc1
2012 FB 200 doc2
[2 rows x 2 columns]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.