现有Series如下
np_array = np.random.randint(1,10,35)
要求转化为7行5列的DataFrame如下图:
解决办法:
ser = pd.Series(np_array) df = pd.DataFrame(ser.values.reshape(7,5)) print(df)
14 在Series中找到能够被3整除的元素位置
现有Series如下:
ser = pd.Series(np.random.randint(1,7))
ser
输出
0 1
1 5
2 7
3 2
4 4
5 1
6 3
dtype: int64
解决办法如下:
np.argwhere(ser % 3==0)
输出
array([[6]]) #索引6所在的元素能够被3整除
15 从一个Series中按照指定位置摘除元素组成新的Series
ser = pd.Series(list('abcdefghijklmnopqrstuvwxyz'))
拿出[0,4,8,14,20]位置所在的元素组成新的Series
解决办法:
pos = [0,20]
ser.take(pos)
输入:
0 a 4 e 8 i 14 o 20 u dtype: object
16 如何水平堆叠/垂直堆叠两个Series
现有两个Series如下:
ser1 = pd.Series(range(5)) ser2 = pd.Series(list(abcde'))
Vertical垂直 (变高)
ser1.append(ser2)
输出:
0 0 1 1 2 2 3 3 4 4 0 a 1 b 2 c 3 d 4 e dtype: object
Horizontal水平 (变宽)
df = pd.concat([ser1,ser2],axis=1)
df
17 查找Series2中的元素,在Series1的那个位置?
现有Series如下:
ser1 = pd.Series([10,9,6,5,3,1,12,13])
ser2 = pd.Series([1,13])
查找ser2中的元素在ser1的那个位置
解决办法:
[np.where(i == ser1)[0].tolist()[0] for i in ser2]
输出:
[5,8]
解析见下图: