>

CSV 를 정리하려고합니다  두 개의 대시 그래프를 만드는 데 사용하기 전에 파일 데이터를 설정합니다.

열 중 하나는 UNITMEASURENAME 입니다.  포함 :

Thousand Barrels per day (kb/d)
Thousand Kilolitres (kl)
Thousand Barrels per day (kb/d)
Thousand Kilolitres (kl)
Conversion factor barrels/ktons
Conversion factor barrels/ktons
Thousand Barrels (kbbl)

다른 열에는 해당하는 각 rows 에 대한 값이 포함됩니다. .

국가 및 데이터 열도 있습니다.

내가해야 할 일은 UNITMEASURENAME 를 나누는 것이다  숫자가있는 열의 값을 가져 와서 별도의 열에 넣습니다.

df.pivot_table  일?

pandas 에서 다음을 수행했습니다. ,하지만 Dash 내에서 플롯 그래프로 작동한다고 생각하지 않습니다.

TK = df.loc[df['UNITMEASURENAME']=='Thousand Kilolitres (kl)']
IN = df.loc[df['COUNTRYNAME']=='INDIA']

실제 CSV 파일에서 새 열을 만들지 않습니다.

TK = df.loc[df['UNITMEASURENAME']=='Thousand Kilolitres (kl)']
IN = df.loc[df['COUNTRYNAME']=='INDIA']

새 열을 원하면 실제 CSV 파일을 열과 함께 저장합니다.

{'Unnamed: 0': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4},
 'Year': {0: 2018, 1: 2018, 2: 2018, 3: 2018, 4: 2018},
 'Month': {0: 3, 1: 3, 2: 3, 3: 4, 4: 4},
 'OBSVALUE': {0: 7323.0, 1: 9907.0, 2: 48827.7847, 3: 9868.0, 4: 47066.6794},
 'COUNTRYNAME': {0: 'SAUDI ARABIA',
  1: 'SAUDI ARABIA',
  2: 'SAUDI ARABIA',
  3: 'SAUDI ARABIA',
  4: 'SAUDI ARABIA'},
 'UNITMEASURENAME': {0: 'Conversion factor barrels/ktons',
  1: 'Thousand Barrels per day (kb/d)',
  2: 'Thousand Kilolitres (kl)',
  3: 'Thousand Barrels per day (kb/d)',
  4: 'Thousand Kilolitres (kl)'},
 'alternate_date': {0: '2018-03-01',
  1: '2018-03-01',
  2: '2018-03-01',
  3: '2018-04-01',
  4: '2018-04-01'}}

CSV 파일의 제목 :

Unnamed: 0  Year    Month   OBSVALUE    COUNTRYNAME UNITMEASURENAME alternate_date
0   0   2018    3   7323.0000   SAUDI ARABIA    Conversion factor barrels/ktons 2018-03-01
1   1   2018    3   9907.0000   SAUDI ARABIA    Thousand Barrels per day (kb/d) 2018-03-01
2   2   2018    3   48827.7847  SAUDI ARABIA    Thousand Kilolitres (kl)    2018-03-01
3   3   2018    4   9868.0000   SAUDI ARABIA    Thousand Barrels per day (kb/d) 2018-04-01
4   4   2018    4   47066.6794  SAUDI ARABIA    Thousand Kilolitres (kl)    2018-04-01

  • 답변 # 1

    나는 당신이 pivot 를 사용할 수 있다고 생각  카테고리 값을 사용하여 새 열을 만드는 Pandas DataFrame의 메소드입니다.

    df = ... # your dataframe
    # We keep 'Unnamed: 0' column as index for later when we merge df and df2
    df2 = df.pivot(index='Unnamed: 0', columns='UNITMEASURENAME', values=['OBSVALUE'])
    # df2 is a MultiIndex dataframe.. So we access the level needed and then reset_index
    df2 = df2['OBSVALUE'].reset_index()
    
    
    

    이제 이것을 원본 데이터 프레임에 병합하여 분석을위한 다른 열을 유지할 수 있습니다

    final_df = pd.merge(df, df2, on='Unnamed: 0')
    
    

  • 답변 # 2

    여러 열 키 (연도, 월, 국가 이름 및 alternate_date)가 있어도 괜찮지 만 피벗을 어렵게하거나 위험하게 만들 수 있습니다. 한 열의 값을 기반으로 새 열을 만드는 코드가 있습니다.

    먼저 원본 데이터를 잃지 않도록 데이터 프레임을 복사하는 것을 좋아합니다

    dfc = df.copy()
    
    

    이제 해당 열의 모든 값에 대한 고유 한 목록을 얻자

    vals = dfc.loc['UNITMEASURENAME'].values
    vals = np.unique(vals)
    
    

    이제 각각의 값에 대해 새로운 열을 만들어 봅시다

    for val in vals:
        dfc.loc[val] = dfc.apply(lambda x: x['OBSVALUE'] if x['UNITMEASURENAME'] == val else None , axis = 1)
    
    

    이 코드를 테스트했습니다.

관련 자료

  • 이전 하나의 사진을 찍어 Gmail을 통해 보내도록 파이썬 프로그램 만들기
  • 다음 excel - VBA 모양 다시 그리기