%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame(np.random.randn(5,3),
index=list(range(1,6)),
columns=list("ABC"))
df
A | B | C | |
---|---|---|---|
1 | 0.555301 | 0.154962 | 0.569291 |
2 | -0.476825 | 0.470965 | -0.519999 |
3 | 1.429313 | 0.172581 | -0.062890 |
4 | -0.334246 | -0.849316 | -0.438807 |
5 | -1.914393 | -0.206165 | -0.494544 |
df[df.B>0]
A | B | C | |
---|---|---|---|
1 | 0.555301 | 0.154962 | 0.569291 |
2 | -0.476825 | 0.470965 | -0.519999 |
3 | 1.429313 | 0.172581 | -0.062890 |
df[df.B>0]["C"] = 0
/Users/mac/anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy if __name__ == '__main__':
df
A | B | C | |
---|---|---|---|
1 | 0.555301 | 0.154962 | 0.569291 |
2 | -0.476825 | 0.470965 | -0.519999 |
3 | 1.429313 | 0.172581 | -0.062890 |
4 | -0.334246 | -0.849316 | -0.438807 |
5 | -1.914393 | -0.206165 | -0.494544 |
df.loc[2:3, "B":"C"]
B | C | |
---|---|---|
2 | 0.470965 | -0.519999 |
3 | 0.172581 | -0.062890 |
df.loc[2, "B"]
0.47096525971108255
df.loc[2, "B"] = 1
df
A | B | C | |
---|---|---|---|
1 | 0.555301 | 0.154962 | 0.569291 |
2 | -0.476825 | 1.000000 | -0.519999 |
3 | 1.429313 | 0.172581 | -0.062890 |
4 | -0.334246 | -0.849316 | -0.438807 |
5 | -1.914393 | -0.206165 | -0.494544 |
df.loc[df.B>0, "C"] = 0
df
A | B | C | |
---|---|---|---|
1 | 0.555301 | 0.154962 | 0.000000 |
2 | -0.476825 | 1.000000 | 0.000000 |
3 | 1.429313 | 0.172581 | 0.000000 |
4 | -0.334246 | -0.849316 | -0.438807 |
5 | -1.914393 | -0.206165 | -0.494544 |