对dataframe的行,列加减乘除四则运算
首先,构建一个dataframe
import pandas as pd
d={'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df=pd.DataFrame(d)
print(df)
输出结果为:
one two three
a 1 5 9
b 2 6 10
c 3 7 11
d 4 8 12
以加法为例,对dataframe进行处理
计算每一行的总和
df['sum']=df['one']+df['two']+df['three']
print(df)
输出结果为:
one two three sum
a 1 5 9 15
b 2 6 10 18
c 3 7 11 21
d 4 8 12 24
计算每一列的总和
df.loc['sum']=df.loc['a']+df.loc['b']+df.loc['c']+df.loc['d']
print(df)
输出结果为:
one two three sum
a 1 5 9 15
b 2 6 10 18
c 3 7 11 21
d 4 8 12 24
sum 10 26 42 78
pandas对数据的处理可以理解为是按整行或者整列进行处理的
对dataframe中的数据进行筛选
首先,重新构建dataframe
import pandas as pd
d={'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df=pd.DataFrame(d)
print(df)
输出结果为:
one two three
a 1 5 9
b 2 6 10
c 3 7 11
d 4 8 12
筛选出dataframe第三列大于10的行
df['three']>10
print(df)
输出结果为:
a False
b False
c True
d True
Name: three, dtype: bool
True代表的是dataframe中第三列大于10的行,False则代表小于等于10的行
这两行内容是什么呢?
df1=df[df['three']>10]
print(df1)
输出结果为:
one two three
c 3 7 11
d 4 8 12
筛选出dataframe第二列小于8,且(&)第三列又大于10的行
且是通过“&”来表示关系的,记得两个筛选条件加括号。
print((df['two']<8)&(df['three']>10))
输出结果为:
a False
b False
c True
d False
dtype: bool
df2=df[(df['two']<8)&(df['three']>10)]
print(df2)
输出结果为:
one two three
c 3 7 11
这就是筛选出来的行,但其并不是一个series,依旧是一个dataframe。
print(type(df2))
输出结果为:
<class ‘pandas.core.frame.DataFrame’>
筛选出dataframe第二列小于6,或(|)第三列又大于10的行
或是通过管道符“|”来表示关系的
print((df['two']<6)|(df['three']>10))
输出结果为:
a True
b False
c True
d True
dtype: bool
df3=df[(df['two']<6)|(df['three']>10)]
print(df3)
输出结果为:
one two three
a 1 5 9
c 3 7 11
d 4 8 12
筛选出dataframe中满足特定条件的元素
筛选出dataframe中大于5的元素
print(df>5)
结果为:
one two three
a False False True
b False True True
c False True True
d False True True
print(df[df>5])
结果为:
one two three
a NaN NaN 9
b NaN 6.0 10
c NaN 7.0 11
d NaN 8.0 12
筛选出dataframe在list=[2,4,6,8,10]中的元素
list=[2,4,6,8,10]
print(df.isin(list))
输出结果为:
one two three
a False False False
b True True True
c False False False
d True True False
print(df[df.isin(list)])
输出结果为:
one two three
a NaN NaN NaN
b 2.0 6.0 10.0
c NaN NaN NaN
d 4.0 8.0 NaN