数据合并之join:默认情况下把行索引相同的数据合并到一起
df1.join(df2) 行索引以df1为准,df2填充进来,没有的数NaN填充
数据合并之merge:按照指定的列把数据按照一定的方式合并到一起
df1.merge(df3,on="",how="") 内连接 inner(交集,and操作) 外连接outer(并集,or操作,NaN补全) 左连接left(左边为准NaN补全) 右连接right(右边为准NaN补全)
pandas 分组和聚合功能
grouped=df.groupby grouped是一个DataFrameGroupBy对象,是可迭代的,grouped中的每一个元素是一个元组,元组里面是(索引(分组的值),分组之后的FataFrame)
按一列分组:df.groupby(column) df.groupby(by="column")
按多列分组:df.groupby([column1, column2])
索引和复合索引
简单的索引操作:获取index: df.index 指定index: df.index = ['x','y']
重新设置index: df.reindex(list("abcedf"))
指定某一列作为index: df.set_index("County",drop=False)
返回index的唯一值:df.set_index("Country").index.unique()
总结:
把字符串离散化:1、获取字符串的去重后列表 2、构造全为0的数组,columns为字符串的列表
3、给全为零的数组赋值,遍历
join 按照index来分组 t1.join(t2)
merge 按照列数据来分组 t1.merge(t2.on="a",how='inner') 内连接
t1.merge(t2.on="a",how='outer') 并集
t1.merge(t2.on="a",how='left') 以t1为准
t1.merge(t2.on="a",how='right') 以t2为准
分组聚合 df.groupby(by) 得到groupby对象 能够调用聚合方法,能够遍历
df.groupby(by).mean()
df.groupby(by="","").sum() 带符合索引的DataFrame
索引 df.index
df.index = ["a","c"]
df.set_index("a")
df.set_index(["a","c"])
从复合索引中取值 Series s1["a"]["b"] s1["a","b"]
DataFrame df.loc["a"].loc["b"]
从里层索引开始选择 df.swaplevel() 交换里外层索引的位置