回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想合并两个Pandas数据帧并控制新列值的名称。</p>
<p>我最初是从CSV文件创建数据帧的。原始CSV文件如下所示:</p>
<pre><code> # presents.csv
org,name,items,spend...
12A,Clerkenwell,151,435,...
12B,Liverpool Street,37,212,...
...
# trees.csv
org,name,items,spend...
12A,Clerkenwell,0,0,...
12B,Liverpool Street,2,92,...
...
</code></pre>
<p>现在我有两个数据帧:</p>
<pre><code>df_presents = pd.read_csv(StringIO(presents_txt))
df_trees = pd.read_csv(StringIO(trees_txt))
</code></pre>
<p>我想把它们合并在一起得到最终的数据帧,连接到<code>org</code>和<code>name</code>值上,然后在所有其他列前面加上适当的前缀。</p>
<pre><code>org,name,presents_items,presents_spend,trees_items,trees_spend...
12A,Clerkenwell,151,435,0,0,...
12B,Liverpool Street,37,212,2,92,...
</code></pre>
<p>我一直在读关于<a href="http://pandas.pydata.org/pandas-docs/stable/merging.html" rel="noreferrer">merging and joining</a>的文档。这似乎可以正确合并并产生正确的列数:</p>
<pre><code>ad = pd.DataFrame.merge(df_presents, df_trees,
on=['practice', 'name'],
how='outer')
</code></pre>
<p>但是,然后执行<code>print list(aggregate_data.columns.values)</code>会显示以下列:</p>
<pre><code>[org', u'name', u'spend_x', u'spend_y', u'items_x', u'items_y'...]
</code></pre>
<p>如何将<code>spend_x</code>重命名为<code>presents_spend</code>等?</p>