繁体   English   中英

python pandas merge / vlookup表

[英]python pandas merge/vlookup tables

我正在编写下面的Python代码来合并两个表,可以使用Vlookup在Excel中完成此操作,但希望对更大的数据集自动执行此过程。 但是,似乎输出数据太大,并且包含两个表中的所有列。 我只想使用第二个表df_pos查找一些列。 您能否看一下我的代码是否有效或可行地执行此任务?

谢谢!

def weighted(mwa="mwa.csv",mwa2="mwa.csv",output="WeightedMWA.csv"):
    df=pd.read_csv(mwa, thousands=",")
    df['Keyword']=df['Keyword'].replace('+','')
    df_pos=pd.read_csv("mwa.csv", thousands=",")
    df_pos['Keyword']=df_pos['Keyword'].replace('+','')
    sumImp=df_pos['Impr.'].sum()
    sumPos=df_pos.groupby(by=['Keyword'])['Avg. Pos.'].sum()
    df_pos['WeightedPos']=sumPos/sumImp
    mergedDF=pd.merge(left=df, right=df_pos, how="left", left_on="Keyword",right_on="Keyword")
    mergedDF.to_csv(output)

您没有为我们提供足够的信息。 您正在输出合并的数据帧,但尚未确定输出中哪些列是必需的。 理想情况下,您只希望保留输出中所需的列以及合并所需的列。

您可以限制通过read_csv函数及其usecols参数导入的列。 文件说:

 usecols : array-like, default None Return a subset of the columns. All elements in this array must either be positional (ie integer indices into the document columns) or strings that correspond to column names provided either by the user in `names` or inferred from the document header row(s). For example, a valid `usecols` parameter would be [0, 1, 2] or ['foo', 'bar', 'baz']. Using this parameter results in much faster parsing time and lower memory usage. 

如果你只是使用df_pos从另一个矩阵查找数据,只使用在该领域df_pos作为索引帧你仰视的,即datasourcematrix [df_pos.LOOKUPCOLUMNNAME],或者如果你没有列名的数据,您可以执行datasourcematrix [df_pos.ix [5]]或其他任何操作。 更轻松,更快...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM