Pandas 16-条件格式化
1. 使用条件表达式
条件表达式可以直接在 DataFrame 上应用,根据条件对数据进行格式化。
示例代码
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 使用条件表达式进行格式化
df['A_formatted'] = df['A'].apply(lambda x: '高' if x > 3 else '低')
print(df)
输出:
A B A_formatted0 1 10 低
1 2 20 低
2 3 30 低
3 4 40 高
4 5 50 高
2. 使用 apply 方法
apply
方法可以应用于整个 DataFrame 或特定的列,根据自定义函数进行格式化。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 自定义格式化函数
def format_value(value):
if value > 30: return '高'
elif value > 20: return '中'
else: return '低'
# 使用 apply 方法进行格式化
df['B_formatted'] = df['B'].apply(format_value)
print(df)
输出:
A B B_formatted0 1 10 低
1 2 20 低
2 3 30 中
3 4 40 高
4 5 50 高
3. 使用样式功能
Pandas 提供了样式功能,可以对 DataFrame 进行更复杂的格式化,包括颜色、字体等。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 自定义样式函数
def highlight_values(value):
if value > 30: return 'background-color: yellow' elif value > 20: return 'background-color: orange' else: return 'background-color: green'
# 应用样式
styled_df = df.style.applymap(highlight_values)
styled_df
输出:
A B0 1 10 # 绿色背景
1 2 20 # 绿色背景
2 3 30 # 橙色背景
3 4 40 # 黄色背景
4 5 50 # 黄色背景
4. 结合使用条件表达式和样式功能
可以将条件表达式和样式功能结合使用,实现更复杂的格式化效果。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 自定义样式函数
def highlight_values(value):
if value > 30: return 'background-color: yellow' elif value > 20: return 'background-color: orange' else: return 'background-color: green'
# 应用样式
styled_df = df.style.applymap(highlight_values)
styled_df
输出:
A B0 1 10 # 绿色背景
1 2 20 # 绿色背景
2 3 30 # 橙色背景
3 4 40 # 黄色背景
4 5 50 # 黄色背景
总结
通过条件表达式、apply 方法和样式功能,可以灵活地对 DataFrame 进行条件格式化,以便更直观地展示数据特征。以下是一个完整的示例代码,展示了如何结合使用这些方法:
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 使用条件表达式进行格式化
df['A_formatted'] = df['A'].apply(lambda x: '高' if x > 3 else '低')
print("使用条件表达式进行格式化:")
print(df)
# 自定义格式化函数
def format_value(value):
if value > 30: return '高'
elif value > 20: return '中'
else: return '低'
# 使用 apply 方法进行格式化
df['B_formatted'] = df['B'].apply(format_value)
print("\n使用 apply 方法进行格式化:")
print(df)
# 自定义样式函数
def highlight_values(value):
if value > 30: return 'background-color: yellow' elif value > 20: return 'background-color: orange' else: return 'background-color: green'
# 应用样式
styled_df = df.style.applymap(highlight_values)
print("\n应用样式:")
styled_df