我有一個數據框,其中的錯誤已經發生。例如:刪除特定的單元格,同時將行移動到左側
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
如何做到這一點?
我有一個數據框,其中的錯誤已經發生。例如:刪除特定的單元格,同時將行移動到左側
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
如何做到這一點?
這是解決方案之一。
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
原則上,它應該就足夠了,因爲除了錯誤的單元之外的所有單元都是數字。我會測試它。謝謝:) –
@TomaszPrzemski讓我知道測試結果:-) – Wen
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
該解決方案是否可以應用於特定列的指示? –
你df是不是直接複製的。這最大限度地減少了獲得答案的機會。 – Kanak
@Kanak我沒有拋出整個代碼,因爲我的問題只是問題的一小部分。這就是爲什麼我在理論示例中提出的原因:) –