首先来一个别致的列表创建,我有印象但是从来没用过,突然发现很好用也很优雅
a=list('qwe13qaew') print(a)
运行结果
['q', 'w', 'e', '1', '3', 'q', 'a', 'e', 'w']
实际应用也很有效果,生成两个实例用于练习
df3 = pd.DataFrame(np.arange(12).reshape((3, 4)), index=['Qingdao', 'Jinan', 'Yantai'], columns=list('abcd')) df4 = pd.DataFrame(np.arange(20).reshape((4, 5)), index=['Qingdao', 'Jinan', 'Yantai', 'Linyi'], columns=list('abcde')) #这种用法很别致啊直接 print(df3) print(df4)
运行结果
a b c d Qingdao 0 1 2 3 Jinan 4 5 6 7 Yantai 8 9 10 11 a b c d e Qingdao 0 1 2 3 4 Jinan 5 6 7 8 9 Yantai 10 11 12 13 14 Linyi 15 16 17 18 19
加法运算
print(df3 + df4 )# 注意行列数不同的两个 DataFrame 相加行列的对齐和值填充。
运行结果
a b c d Qingdao 0 1 2 3 Jinan 4 5 6 7 Yantai 8 9 10 11 a b c d e Qingdao 0 1 2 3 4 Jinan 5 6 7 8 9 Yantai 10 11 12 13 14 Linyi 15 16 17 18 19 ######################################### a b c d e Jinan 9.0 11.0 13.0 15.0 NaN Linyi NaN NaN NaN NaN NaN Qingdao 0.0 2.0 4.0 6.0 NaN Yantai 18.0 20.0 22.0 24.0 NaN
相当牛逼,index跟‘name’相同的直接加,不存在的用缺省值定住。
填充后的加法运算
print(df3.add(df4, fill_value=0)) # 注意无效值用 0 填充后的加法运算 print(df3.add(df4, fill_value=100))
运行结果
a b c d e Jinan 9.0 11.0 13.0 15.0 9.0 Linyi 15.0 16.0 17.0 18.0 19.0 Qingdao 0.0 2.0 4.0 6.0 4.0 Yantai 18.0 20.0 22.0 24.0 14.0 a b c d e Jinan 9.0 11.0 13.0 15.0 109.0 Linyi 115.0 116.0 117.0 118.0 119.0 Qingdao 0.0 2.0 4.0 6.0 104.0 Yantai 18.0 20.0 22.0 24.0 114.0
减法运算
s3 = df3.iloc[0] print(s3) print(df3 - s3 ) # 减法缺省是按列对齐去减,并广播至每一行。
运行结果
a 0 b 1 c 2 d 3 Name: Qingdao, dtype: int32 a b c d Qingdao 0 0 0 0 Jinan 4 4 4 4 Yantai 8 8 8 8
每一行都减去了0,1,2,3
对比一下
s4=[4,5,6,7] print(df3 - s4) # 减法缺省是按列对齐去减,并广播至每一行。
运算结果
a b c d Qingdao -4 -4 -4 -4 Jinan 0 0 0 0 Yantai 4 4 4 4
求和