2017-04-14 96 views
0

我有两个.csv文件,一个CSV1和另一个CSV2。在CSV1是此格式的数据的大名单:使用python从另一个.csv填充一个.csv文件

name, year 
Brian, 2016 
Lucy, 2016 
Bob, 2014 
Alen, 2012 

然后在CSV2:

year, zodiac 
2016, Monkey 
2015, Goat 
2014, Horse 
2013, Snake 
2012, Dragon 

我想使它所以在CSV1每个人的生肖出现这样的附加列:

name, year, zodiac 
Brian, 2016, Monkey 
Lucy, 2016, Monkey 
Bob, 2014, Horse 
Alen, 2012, Dragon 

我认为这是可能与蟒蛇熊猫库这样做,但我得到的文档中失去了 - 任何建议,将不胜感激!

+1

一个很好的熊猫介绍将是[10分钟教程](http://pandas.pydata.org/pandas-docs/stable/10min.html)。它会给你几乎所有你需要知道的东西 – tmrlvi

回答

2

你应该尝试map。这使得它死的简单:

import pandas as pd 
# Loads csv1 with default index 
df1 = pd.read_csv("csv1.csv") 
# Loads csv2 and sets the year as the index 
df2 = pd.read_csv("csv2.csv", index_col=0) 

df1["zodiac"] = df1["year"].map(df2["zodiac"]) 

df1.to_csv("output.csv") 

注意的df2指数是一年 - 所以它本质上以类似的方式来岁的符号的字典表现。 map将字典或pandas.Series作为该列中值的查找表。

2

听起来像df.join()方法正是你想要的!您可以加入年份栏中的两个数据框,然后将其导回到csv,但是您需要。

1

试试这个:

import pandas as pd 

fn1 = r'/path/to/file1.csv' 
fn2 = r'/path/to/file2.csv' 

pd.merge(pd.read_csv(fn1, skipinitialspace=True), 
     pd.read_csv(fn2, skipinitialspace=True)) \ 
    .to_csv('/path/to/result.csv', index=False) 
+0

看起来你正在关注自己想要的东西。 – piRSquared

+0

@piRSquared,谢谢!我有一种感觉,你永远不会睡觉;-) – MaxU

+0

在出租车回机场。不对。我睡了3个小时 – piRSquared