pandas 面试题挑战四

现有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]

解析见下图:

 

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...