2017-10-17 2 views
1

두 개의 데이터 프레임이 있습니다. 하나는 정보가 거의없고 (df1) 다른 데이터 프레임에는 모든 데이터가 있습니다 (df2). df1의 새 열에서 Total2 값을 찾고 이름을 기반으로 새 열을 채우려는 것입니다. df1에 표시되는 이름은 df2의 이름에서 항상 일치를 찾습니다. 팬더에 이미 어떤 기능이 있는지 궁금합니다. 나의 최종 목표는 막 대형 차트를 만드는 것입니다.다른 데이터 프레임의 일치 값을 사용하여 데이터 프레임에 새 열을 만듭니다.

alldatapath = "all_data.csv" 
filteredpath = "filtered.csv" 

import pandas as pd 

df1 = pd.read_csv(
    filteredpath,  # file name 
    sep=',',     # column separator 
    quotechar='"',    # quoting character 
    na_values="NA",    # fill missing values with 0 
    usecols=[0,1],  # columns to use 
    decimal='.')    # symbol for decimals 

df2 = pd.read_csv(
    alldatapath,  # file name 
    sep=',',     # column separator 
    quotechar='"',    # quoting character 
    na_values="NA",    # fill missing values with 0 
    usecols=[0,1],  # columns to use 
    decimal='.')    # symbol for decimals 

df1 = df1.head(5) #trim to top 5 

print(df1) 
print(df2) 

출력 (DF1) :

  Name Total 
0 Accounting  3 
1 Reporting  1 
2  Finance  1 
3  Audit  1 
4 Template  2 

출력 (DF2) :

  Name Total2 
0 Reporting 100 
1 Accounting 120 
2  Finance 400 
3  Audit 500 
4 Information  50 
5  Template 1200 
6  KnowHow 2000 

최종 출력 (DF1)을해야 뭔가 같은 :

  Name Total Total2(new column) 
0 Accounting  3 120 
1 Reporting  1 100 
2  Finance  1 400 
3  Audit  1 500 
4 Template  2 1200 

답변

2

map 필요 작성자 : Series

df1['Total2'] = df1['Name'].map(df2.set_index('Name')['Total2']) 
print (df1) 
     Name Total Total2 
0 Accounting  3  120 
1 Reporting  1  100 
2  Finance  1  400 
3  Audit  1  500 
4 Template  2 1200 

그리고 set_indexDataFrame.plot.bar과 :

df1.set_index('Name').plot.bar() 
+0

덕분에 처음으로 새로운 열의! 필자는 글로벌 코드에이 기능을 적용하기 위해 이러한 기능을 연구 할 것입니다. – Gonzalo

관련 문제