2017-10-28 5 views
1

エラーが激しかったデータフレームがあります。例:行を左に動かしながら特定のセルを削除します

data1 data2 data3 
0 111  555 
1 222  666 
2 A  333  777 
3 444  888 

I同時に左に行2のすべての残りの部分を移動させながら列「DATA1」から文字「A」を除去したいです。結果をフォームで取得するには:

data1 data2 data3 
0 111  555 
1 222  666 
2 333  777 
3 444  888 

どのようにするのですか?

+1

あなたのDFが直接再現可能ではありません。これにより、回答を得る機会が最小限に抑えられます。 – Kanak

+0

@Kanak私の問題はわずかな割合しかないので、私はコード全体を投げていませんでした。だから私は理論的な例でそれを提示したのです:) –

答えて

4

これは解決策の1つです。

df=df.apply(pd.to_numeric,errors='coerce').\ 
    apply(lambda x: sorted(x, key=pd.isnull), 1).fillna('') 
df 
Out[931]: 
    data1 data2 data3 
0 111.0 555.0  
1 222.0 666.0  
2 333.0 777.0  
3 444.0 888.0  
+0

原則として、間違っているセルを除くすべてのセルが数字なので、これで十分です。私はそれをテストします。ありがとう:) –

+0

@TomaszPrzemski私にテスト結果を知らせてください:-) – Wen

3
d = df.replace('A', np.nan) 
a = d.isnull().values.argsort(1) 

pd.DataFrame(
    d.values[np.arange(len(a))[:, None], a], 
    d.index, d.columns) 

    data1 data2 data3 
0 111 555 NaN 
1 222 666 NaN 
2 333 777 NaN 
3 444 888 NaN 
+0

この解決策は、特定の列の指示で適用できますか? –

関連する問題