使用python用另一个.csv中的数据填充一个.csv文件

时间:2017-04-14 10:02:00

标签: python csv pandas

我有两个.csv文件,一个CSV1和另一个CSV2。在CSV1中有一个大型数据列表,如下所示:

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

我认为使用python Pandas库可以做到这一点,但我在文档中迷失了 - 任何建议都将不胜感激!

3 个答案:

答案 0 :(得分:2)

听起来像df.join()方法正是你想要的!您将能够加入年份列上的两个数据帧,然后将其导出回csv,无论您想要什么。

答案 1 :(得分: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 :(得分: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)