2017-10-28 46 views
1

我有一個數據框,其中的錯誤已經發生。例如:刪除特定的單元格,同時將行移動到左側

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

我想從柱「DATA1」,而同時移動行2的所有其餘部分向左除去字母「A」。在表格中得到結果:

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

如何做到這一點?

+1

你df是不是直接複製的。這最大限度地減少了獲得答案的機會。 – Kanak

+0

@Kanak我沒有拋出整個代碼,因爲我的問題只是問題的一小部分。這就是爲什麼我在理論示例中提出的原因:) –

回答

4

這是解決方案之一。

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

該解決方案是否可以應用於特定列的指示? –

相關問題