假設我有一個這樣的資料框:
# importing pandas and numpy
import pandas as pd
import numpy as np
# create a sample dataframe
data = pd.DataFrame({
'A' : [ 1, 2, 3, -1, -2, 3],
'B' : [ -1, -2, -3, 12, -12, -3],
'C' : [ 1, -2, 3, -1, -2, 13],
'D' : [ -1, 2, 3, -1, 2, -3],
'E' : [ 1, 12, 3, 11, -2, 3]
})
# view the data
data
這給出了:
A B C D E
0 1 -1 1 -1 1
1 2 -2 -2 2 12
2 3 -3 3 3 3
3 -1 12 -1 -1 11
4 -2 -12 -2 2 -2
5 3 -3 13 -3 3
現在,我的問題是如何將 if 陳述句應用于所有列和行,從而導致表的所有值都被 if 陳述句值替換。
我要應用的等式是:
if x <= 0:
0
else:
x
因此,在這種情況下,結果資料將消除所有負值:
A B C D E
0 1 0 1 0 1
1 2 0 0 2 12
2 3 0 3 3 3
3 0 12 0 0 11
4 0 0 0 2 0
5 3 0 13 0 3
我嘗試使用以下 loc 并將它們應用于 A、B、C、D 和 E:
data.loc[(data.A <= 0), ['A']] = 0
data.loc[(data.A > 0), ['A']] = data.A
但這不是最佳解決方案,因為我的列可能不止 A、B、C、D 和 E。此外,有時我需要解決其他不等式。
任何指導將不勝感激。
謝謝!
uj5u.com熱心網友回復:
DataFrame.clip與 一起使用lower:
df = data.clip(lower=0)
print (df)
A B C D E
0 1 0 1 0 1
1 2 0 0 2 12
2 3 0 3 3 3
3 0 12 0 0 11
4 0 0 0 2 0
5 3 0 13 0 3
僅針對某些列:
cols = ['A','B','C']
data[cols] = data[cols].clip(lower=0)
print (data)
A B C D E
0 1 0 1 -1 1
1 2 0 0 2 12
2 3 0 3 3 3
3 0 12 0 -1 11
4 0 0 0 2 -2
5 3 0 13 -3 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/424775.html
下一篇:兩個不同資料幀列的一種熱編碼
