我有两个.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库可以做到这一点,但我在文档中迷失了 - 任何建议都将不胜感激!
答案 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)