13 如何把一個 numpy array 轉(zhuǎn)換成規(guī)定形狀的 dataframe
現(xiàn)有Series如下
np_array = np.random.randint(1, 10, 35)
要求轉(zhuǎn)化為7行5列的DataFrame如下圖:
image.png
解決辦法:
ser = pd.Series(np_array)
df = pd.DataFrame(ser.values.reshape(7,5))
print(df)
image.png
14 在Series中找到能夠被3整除的元素位置
現(xiàn)有Series如下:
ser = pd.Series(np.random.randint(1, 10, 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
現(xiàn)有Series如下
ser = pd.Series(list('abcdefghijklmnopqrstuvwxyz'))
拿出[0, 4, 8, 14, 20]位置所在的元素組成新的Series
解決辦法:
pos = [0, 4, 8, 14, 20]
ser.take(pos)
輸入:
0 a
4 e
8 i
14 o
20 u
dtype: object
16 如何水平堆疊/垂直堆疊兩個Series
現(xiàn)有兩個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
image.png
16 查找Series2中的元素,在Series1的那個位置?
現(xiàn)有Series如下:
ser1 = pd.Series([10, 9, 6, 5, 3, 1, 12, 8, 13])
ser2 = pd.Series([1, 3, 10, 13])
查找ser2中的元素在ser1的那個位置
解決辦法:
[np.where(i == ser1)[0].tolist()[0] for i in ser2]
輸出:
[5, 4, 0, 8]
解析見下圖:
image.png