2017-09-14 11 views
0

どうすればよいか理解してください。私はデータフレームを持っています。 "インジケータ"の列には、さまざまなパラメータ(文字列)がありますが、私は "ライフの満足度"だけが必要です。 「基本施設のない住宅」やそれに対応する価値観や国など、他の指標の削除方法はわかりません。ここで文字列の行とそれに対応する値を他の列から削除する

import numpy as np 
import pandas as pd 

oecd_bli = pd.read_csv("/Users/vladelec/Desktop/Life.csv") 
df = pd.DataFrame(oecd_bli) 
df.drop(df.columns[[0,2,4,5,6,7,8,9,10,11,12,13,15,16]], axis=1, inplace=True) 
#dropped other columns that a do not need 

は私のデータフレームのスクリーンショットです:

Example of Dataframe

+0

'oecd_bli = pd.read_csv( "/ユーザ/ vladelec /デスクトップ/ Life.csv") DFと

  • 多重比較= pd.DataFrame(oecd_bli) '最初の行のみです。 – GiantsLoveDeathMetal

  • +0

    [列値に基づいてPandasのDataFrame行を削除する]の可能な複製(https://stackoverflow.com/questions/18172851/deleting-dataframe-row-in-pandas-based-on-column-value) – GiantsLoveDeathMetal

    答えて

    1

    あなたはとてもようなあなたのデータをロードすることができます:あなただけのことができます。その後、Indicatorから"Life Satisfaction"をしたい場合は

    file_name = "/Users/vladelec/Desktop/Life.csv" 
    
    # Columns you want to load 
    keep_cols = ['Country', 'Indicator'] 
    
    # pd.read_csv() will load the data into a pd.DataFrame 
    oecd_bli = pd.read_csv(file_name, usecols=keep_cols) 
    

    以下を実行してください:

    oecd_bli = oecd_bli[oecd_bli['Indicator'] == "Life Satisfaction"] 
    

    あなたが維持したいIndicatorsより多くを持っている場合は、この操作を行うことができます。

    keep_indicators = [ 
        "Life Satisfaction", 
        "Crime Indicator", 
    ] 
    
    oecd_bli = oecd_bli[oecd_bli['Indicator'].isin(keep_indicators)] 
    
    +0

    ありがとうmanあなたの答え! –

    +0

    答えを忘れないでください – GiantsLoveDeathMetal

    0

    @GiantsLoveDeathMetalは良い点を持っています。原則として、生データをoecd_bliとして読み込み、特定の条件を満たすDataFrameのサブセットを選択することができます。

    デモあるいは

    import pandas as pd 
    
    
    # Given a DataFrame of raw data 
    d = { 
        "Country": pd.Series(["Australia", "Austria", "Fiji", "Japan"]), 
        "Indicator": pd.Series(["Dwellings ...", "Dwellings ...", "Life ...", "Life ..."]), 
        "Value": pd.Series([1.1, 1.0, 2.2, 2.9]), 
    } 
    
    oecd_bli = pd.DataFrame(d, columns=["Country", "Indicator", "Value"]) 
    oecd_bli 
    

    enter image description here

    # Select rows starting with "Life" in column "Indicator" 
    condition = oecd_bli["Indicator"].str.startswith("Life") 
    subset = oecd_bli[condition] 
    subset 
    

    enter image description here

    .loc介してラベル索引付けを使用してサブセットを選択:

    subset = oecd_bli.loc[condition, :] 
    

    ここでloc[<rows>, <columns>]を予期しています。したがって、条件を満たす行が表示されます。


    詳細

    データフレームのビューがTrue条件を与えるすべての行のために提示されていることに注意してください。これは、DataFrameがboolean arraysに応答するためです。ブール配列の

    例:設定条件に

    >>> condition = oecd_bli["Indicator"].str.startswith("Life") 
    >>> condition 
    
    0 False 
    1 False 
    2  True 
    3  True 
    Name: Indicator, dtype: bool 
    

    他の方法:

    >>> condition = oecd_bli["Indicator"] == "Life ..." 
    >>> condition = ~oecd_bli["Indicator"].str.startswith("Dwell") 
    >>> condition = oecd_bli["Indicator"].isin(["Life ...", "Crime ..."]) 
    >>> condition = (oecd_bli["Indicator"] == "Life ...") | (oecd_bli["Indicator"] == "Crime ...") 
    
    1. 直接等価(==
    2. は望ましくない出来事
    3. は、(~)除外するホワイトリストの列は論理ビット演算子(|&、など)あなたがする必要がいけない
    関連する問題