df = pd.DataFrame(np.arange(12).reshape((4,3)),\
columns=list('abe'),\
index = ['wo','shi','shui','ha'])
formatr = lambda x:'%.1f' %x
df.apply(formatr)
pandas 的 apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数
运行上面的代码会出错
TypeError: cannot convert the series to
不能向Dataframe.apply()中传递不能处理数组的函数
下面这个可以
formatr = lambda x:'%.1f' %x
df.applymap(formatr)
formatr = lambda x:'%.1f' %x
df['b'].map(formatr)
二。使用apply()+value_counts()对DataFrame查询不重复值
data = pd.DataFrame({'qu1':[1,3,4,3,4],
'qu2':[2,6,1,7,3],
'qu3':[1,5,2,4,4]})
data
qu1 qu2 qu3
0 1 2 1
1 3 6 5
2 4 1 2
3 3 7 4
4 4 3 4
一共7个不重复值
{(1, 2, 1): 1, (3, 6, 5): 1, (3, 7, 4): 1, (4, 1, 2): 1, (4, 3, 4): 1}
qu1 qu2 qu3
1 2 1 1
3 6 5 1
7 4 1
4 1 2 1
3 4 1
dtype: int64
我们要对逐个值进行分析,所以要使用apply函数
qu1 qu2 qu3
1 1.0 1.0 1.0
2 NaN 1.0 1.0
3 2.0 1.0 NaN
4 2.0 NaN 2.0
5 NaN NaN 1.0
6 NaN 1.0 NaN
7 NaN 1.0 NaN
形成一个以不重复值为索引,形成对每一列计算不重复次数为值的新DataFrame