华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)(2)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)(2)

67. 如何在 Pandas DataFrame 中添加新列?


可以使用 + 运算符、直接赋值或者 insert() 将新列添加到 Pandas 数据帧,如下所示:

import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) 
# 创建新的 Series
df['third']= = pd.Series([7, 8, 9])
#To add new column third
df += new_column    
print (df)    
# 创建新的 Series
new_column = pd.Series([10, 11, 12])
# 分配新列到 DataFrame
df['D'] = new_column
print(df)
# 定义新列的名称和数据
new_column_name = 'E'
new_column_data = [13, 14, 15]
# 在指定位置插入新列
df.insert(loc=1, column=new_column_name, value=new_column_data)
print(df)  


68. 如何从 DataFrame 中删除索引名称、行和列?


  • 要删除索引名称:可以执行 del df.index._name 或者将索引幅值为 None 以按名称删除索引。
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 设置索引名称为 'Index_Name'
df.index.name = 'Index_Name'
print(df)
# 删除索引名称
del df.index._name      # 等效于 df.index._name = None
print(df)
'''
输出:
          A  B
Index_Name      
0           1  4
1           2  5
2           3  6
   A  B
0  1  4
1  2  5
2  3  6
'''

注意:如果在 del df.index._name 之前没有设置索引的名称,那么将提示 AttributeError 错误,因为它只会删除已经存在的索引名称。

  • 从 DataFrame 删除行/列:drop() 方法用于从 DataFrame 中删除行/列。axis=0 表示删除指定行或多行,axis=1 表示删除指定列或多列。
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 删除指定行
df_without_rows = df.drop([0, 2])
print(df_without_rows)
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 删除指定列
df_without_columns = df.drop(['A'], axis=1)
print(df_without_columns)


69. 如何获得序列 A 中没有的序列 B 中的项?


要获取 Series A 中没有的 Series B 中的项,可以使用 Pandas 的 isin() 方法和布尔索引。

以下是一种常见的方法:

import pandas as pd
# 创建示例 Series
series_a = pd.Series([1, 2, 3, 4])
series_b = pd.Series([3, 4, 5, 6])
# 使用 isin() 方法检查 Series B 中的项是否在 Series A 中
is_in_series_a = series_b.isin(series_a)
# 使用布尔索引获取 Series B 中不在 Series A 中的项
result = series_b[~is_in_series_a]
print(result)

输出结果如下所示,即为 Series A 中没有的 Series B 中的项:

2    5
3    6
dtype: int64

注意:以上代码假设 Series A 和 Series B 的数据类型相同(都为整数)。如果 Series A 和 Series B 的数据类型不同,需要先将它们转为相同的数据类型。


70. 如何获得序列 A 和序列 B 的非公共项?


要获取序列 A 和序列 B 的非公共项,可以使用 Pandas 的 isin() 方法和布尔索引的结合。

以下是一种常见的方法:

import pandas as pd
# 创建示例 Series
series_a = pd.Series([1, 2, 3, 4])
series_b = pd.Series([3, 4, 5, 6])
# 使用 isin() 方法检查 Series A 和 Series B 中的元素是否相互存在
is_in_series_a = series_b.isin(series_a)
is_in_series_b = series_a.isin(series_b)
# 使用布尔索引获取各自序列中不在另一个序列中的项
result = series_a[~is_in_series_b]._append(series_b[~is_in_series_a])
print(result)

输出结果如下所示,即为序列 A 和序列 B 的非公共项:

0    1
1    2
2    5
3    6
dtype: int64


71. Pandas 库可以识别导入的日期和时间数据吗?


是的,Pandas 库可以识别和处理日期和时间数据。当从不同来源导入数据时,Pandas 提供了多种方法来解析和识别日期和时间。

  1. 使用 pd.to_datetime() 函数:可以使用 pd.to_datetime() 函数将字符串转换为 Pandas 的日期时间对象。它可以自动解析多种日期和时间格式,并将其转换为标准的日期时间格式。
import pandas as pd
# 示例数据
data = ['2022-01-01 12:00:00', '2022-01-02 13:30:45', '2022-01-03 15:15:00']
# 转换为日期时间对象
datetime_data = pd.to_datetime(data)
print(datetime_data)

输出结果如下所示:

DatetimeIndex(['2022-01-01 12:00:00', '2022-01-02 13:30:45', '2022-01-03 15:15:00'], dtype='datetime64[ns]', freq=None)
  1. 在这个例子中,pd.to_datetime() 函数将日期时间字符串列表转换为 Pandas 的 DatetimeIndex 对象,这是一个包含日期和时间的索引
  2. dateutil.parser.parse():在某些情况下,日期和时间可能具有非标准的格式,无法被自动解析。可以使 dateutil.parser.parse() 函数来解析这些字符串。它是 dateutil 库中的一个功能强大的日期时间解析器。
from dateutil.parser import parse
import pandas as pd
# 示例数据
data = ['01/01/2022 12pm', '01/02/2022 01:30pm', '01/03/2022 03:45pm']
# 解析日期时间字符串
datetime_data = [parse(dt) for dt in data]
# 转换为 pandas 的日期时间对象
datetime_data = pd.to_datetime(datetime_data)
print(datetime_data)
  1. 输出结果如下所示:
DatetimeIndex(['2022-01-01 12:00:00', '2022-01-02 13:30:00', '2022-01-03 15:45:00'], dtype='datetime64[ns]', freq=None)

Python 函数库面试问题:待更新

相关文章
|
4月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
4月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
4月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
7月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
130 3
|
7月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
7月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
6月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
3月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
3月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
3月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
96 4

热门文章

最新文章