2012-08-27 14 views
7

데이터를 병합 파일에 입력했습니다. 이 데이터를 테이블로 분할하여 표준화하려고합니다. pandas으로 평면화 된 데이터를 읽고 인스턴스를 DataFrame 인스턴스로 가져 와서 몇 가지 함수를 적용하여 DataFrame 인스턴스를 얻을 수 있습니까?팬더 : DataFrame 표준화

예 :

ItemId ItemDescription 
1  scroll of Sneak 
2  scroll of Invisibile 

:

ItemId ClientId PriceQuoted ItemDescription 
1  1   10   scroll of Sneak 
1  2   12   scroll of Sneak 
1  3   13   scroll of Sneak 
2  2   2500   scroll of Invisible 
2  4   2200   scroll of Invisible 

내가 두 DataFrames을 만들려면 :

데이터는 다음과 같이 CSV 파일의 형태로 디스크에 나에게 주어진

ItemId ClientId PriceQuoted 
1  1   10 
1  2   12 
1  3   13 
2  2   2500 
2  4   2200 

pandas이 가장 단순한 경우에만 좋은 해결책을 가지고 있다면 (위의 예제에서와 같이 다 대일 관계로 2 개의 테이블을 정규화하면 결과가 충분합니다). 그러나 앞으로 더 일반적인 해결책이 필요할 수도 있습니다.

답변

9
In [30]: df = pandas.read_csv('foo1.csv', sep='[\s]{2,}') 

In [30]: df 
Out[30]: 
    ItemId ClientId PriceQuoted  ItemDescription 
0  1   1   10  scroll of Sneak 
1  1   2   12  scroll of Sneak 
2  1   3   13  scroll of Sneak 
3  2   2   2500 scroll of Invisible 
4  2   4   2200 scroll of Invisible 

In [31]: df1 = df[['ItemId', 'ItemDescription']].drop_duplicates().set_index('ItemId') 

In [32]: df1 
Out[32]: 
      ItemDescription 
ItemId 
1   scroll of Sneak 
2  scroll of Invisible 

In [33]: df2 = df[['ItemId', 'ClientId', 'PriceQuoted']] 

In [34]: df2 
Out[34]: 
    ItemId ClientId PriceQuoted 
0  1   1   10 
1  1   2   12 
2  1   3   13 
3  2   2   2500 
4  2   4   2200