- 获取series中给定索引的元素(items)
ser = pd.Series(list('abcdefghijklmnopqrstuvwxyz')) index = [0, 4, 8, 14, 20] # 获取指定索引的元素 ser.take(index) #> 0 a 4 e 8 i 14 o 20 u dtype: object
- 如何垂直和水平的拼接series
ser1 = pd.Series(range(5)) ser2 = pd.Series(list('abcde')) # 垂直拼接 df = pd.concat([ser1, ser2], axis=0) # 水平拼接 df = pd.concat([ser1, ser2], axis=1) print(df) #> 0 1 0 0 a 1 1 b 2 2 c 3 3 d 4 4 e
15.如何获取series对象A中包含series对象B元素的位置
# ser1必须包含ser2,否则会报错 ser1 = pd.Series([10, 9, 6, 5, 3, 1, 12, 8, 13]) ser2 = pd.Series([1, 3, 10, 13]) # 方法 1 [np.where(i == ser1)[0].tolist()[0] for i in ser2] # 方法 2 [pd.Index(ser1).get_loc(i) for i in ser2] #> [5, 4, 0, 8] 16.如何计算series之间的均方差 truth = pd.Series(range(10)) pred = pd.Series(range(10)) + np.random.random(10) # 均方差 np.mean((truth-pred)**2) #> 0.25508722434194103
17.如何使series中每个元素的首字母为大写
# series的元素为str类型 ser = pd.Series(['how', 'to', 'kick', 'ass?']) # 方法 1 ser.map(lambda x: x.title()) # 方法 2 ,字符串相加 ser.map(lambda x: x[0].upper() + x[1:]) # 方法 3 pd.Series([i.title() for i in ser]) #> 0 How 1 To 2 Kick 3 Ass? dtype: object
18.如何计算series中每个元素的字符串长度
ser = pd.Series(['how', 'to', 'kick', 'ass?']) # 方法 ser.map(lambda x: len(x)) #> 0 3 1 2 2 4 3 4 dtype: int64
19.如何计算series的一阶导和二阶导
ser = pd.Series([1, 3, 6, 10, 15, 21, 27, 35]) # 求一阶导并转化为列表类型 print(ser.diff().tolist()) # 求二阶导并转化为列表类型 print(ser.diff().diff().tolist()) #> [nan, 2.0, 3.0, 4.0, 5.0, 6.0, 6.0, 8.0] [nan, nan, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0]
20.如何将一系列日期字符串转换为timeseries
ser = pd.Series(['01 Jan 2010', '02-02-2011', '20120303', '2013/04/04', '2014-05-05', '2015-06-06T12:20']) pd.to_datetime(ser) #> 0 2010-01-01 00:00:00 1 2011-02-02 00:00:00 2 2012-03-03 00:00:00 3 2013-04-04 00:00:00 4 2014-05-05 00:00:00 5 2015-06-06 12:20:00 dtype: datetime64[ns]
- 如何从一个series中获取至少包含两个元音的元素
ser = pd.Series(['Apple', 'Orange', 'Plan', 'Python', 'Money']) # 方法 from collections import Counter # Counter是一个类字典类型,键是元素值,值是元素出现的次数,满足条件的元素返回True mask = ser.map(lambda x: sum([Counter(x.lower()).get(i, 0) for i in list('aeiou')]) >= 2) ser[mask] #> 0 Apple 1 Orange 4 Money dtype: object
-
fruit = pd.Series(np.random.choice(['apple', 'banana', 'carrot'], 10)) weights = pd.Series(np.linspace(1, 10, 10)) \# 根据fruit对weight分组 weightsGrouped = weights.groupby(fruit) print(weightsGrouped.indices) \# 对分组后series求每个索引的平均值 weightsGrouped.mean() #> {'apple': array([0, 3], dtype=int64), 'banana': array([1, 2, 4, 8], dtype=int64), 'carrot': array([5, 6, 7, 9], dtype=int64)} #> apple 2.50 banana 4.75 carrot 7.75 dtype: float64
-
- 如何从一个series中获取至少包含两个元音的元素