根据 pandas 数据帧范围格式化单元格
Format cells based on pandas dataframe range
我有两个 pandas 数据框,如下所示。我想将第二个数据框 (df2) 中所有行的字体颜色更改为红色(代码应该采用数据框范围而不是 A7:A8,因为范围可能会根据数据框上升或下降)
import pandas as pd
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
writer.save()
我期待如下屏幕截图所示的输出
下面的代码似乎不起作用:
import pandas as pd
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
def to_red():
return 'color: red'
df2.style.applymap(to_red)
writer.save()
您需要在定义的函数中传递一个参数,并且您必须 re-assign 将样式对象返回给 df2。
尝试:
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
#Note change in following line
def to_red(val):
return 'color: red'
df2 = df2.style.applymap(to_red)
#Note move write lines after saving stying to df2 variable again.
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
writer.save()
输出:
我有两个 pandas 数据框,如下所示。我想将第二个数据框 (df2) 中所有行的字体颜色更改为红色(代码应该采用数据框范围而不是 A7:A8,因为范围可能会根据数据框上升或下降)
import pandas as pd
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
writer.save()
我期待如下屏幕截图所示的输出
下面的代码似乎不起作用:
import pandas as pd
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
def to_red():
return 'color: red'
df2.style.applymap(to_red)
writer.save()
您需要在定义的函数中传递一个参数,并且您必须 re-assign 将样式对象返回给 df2。
尝试:
df1 = pd.DataFrame({'Data1': [10, 20, 30],
'Data2': [11, 21, 31],
'Date': [pd.to_datetime('today'),
"",
pd.to_datetime('today')]})
df2 = pd.DataFrame({'Data1': ["A", "B"]})
writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )
workbook = writer.book
#Note change in following line
def to_red(val):
return 'color: red'
df2 = df2.style.applymap(to_red)
#Note move write lines after saving stying to df2 variable again.
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=df1.shape[0]+2 , startcol=0)
writer.save()
输出: