我想合并两个Pandas数据帧并控制新列值的名称。
我最初是从CSV文件创建数据帧的。原始CSV文件如下所示:
# 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,...
...
现在我有两个数据帧:
df_presents = pd.read_csv(StringIO(presents_txt))
df_trees = pd.read_csv(StringIO(trees_txt))
我想把它们合并在一起得到最终的数据帧,连接到org
和name
值上,然后在所有其他列前面加上适当的前缀。
org,name,presents_items,presents_spend,trees_items,trees_spend...
12A,Clerkenwell,151,435,0,0,...
12B,Liverpool Street,37,212,2,92,...
我一直在读关于merging and joining的文档。这似乎可以正确合并并产生正确的列数:
ad = pd.DataFrame.merge(df_presents, df_trees,
on=['practice', 'name'],
how='outer')
但是,然后执行print list(aggregate_data.columns.values)
会显示以下列:
[org', u'name', u'spend_x', u'spend_y', u'items_x', u'items_y'...]
如何将spend_x
重命名为presents_spend
等?
merge函数中的
suffixes
选项执行此操作。defaults是suffixes=('_x', '_y')
。通常,可以使用rename方法重命名列。
您可以通过如下设置其列来重命名ad的所有列。
另一种方法是在合并之前向数据帧的列添加后缀:
相关问题 更多 >
编程相关推荐