小编Leo*_*das的帖子

将 Pandas DataFrame 写入 Excel:如何自动调整列宽

我正在尝试将一系列 Pandas DataFrames 写入 Excel 工作表,以便:

  1. 工作表的现有内容不会被覆盖或擦除,并且
  2. 调整 Excel 列宽以适应列条目的长度(这样我就不必在 Excel 中手动执行此操作)。

对于 1),我以@MaxU 编写的辅助函数的形式找到了一个很好的解决方案:如何在不覆盖数据的情况下写入现有的 excel 文件(使用 Pandas)?. 对于 2) 我在这里找到了一个很好的解决方案。但是当我尝试将这些解决方案放在一起时,列宽根本不会改变。这是我的完整代码:

import pandas as pd
import os
from openpyxl import load_workbook

def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                       truncate_sheet=False, 
                       **to_excel_kwargs):
    """
    Append a DataFrame [df] to existing Excel file [filename]
    into [sheet_name] Sheet.
    If [filename] doesn't exist, then this function will create it.

    @param filename: File path or existing ExcelWriter
                     (Example: '/path/to/file.xlsx')
    @param df: DataFrame to save to …
Run Code Online (Sandbox Code Playgroud)

python excel dataframe pandas openpyxl

7
推荐指数
1
解决办法
505
查看次数

类似index.get_loc的函数,但适用于多个值

我有以下数据框:

df = pd.DataFrame({'color': ['Yellow', 'Green', 'Red', 'Orange'], 'weight': [0.5, 4, 1, 10]}, index = ['Banana','Melon','Apple','Pumpkin'])

看起来像这样:

Banana  Yellow     0.5
Melon    Green     4.0
Apple      Red     1.0
Pumpkin  Orange    10.0
Run Code Online (Sandbox Code Playgroud)

我想做的是访问“香蕉”、“甜瓜”、“苹果”、“南瓜”子集的整数位置。我知道 pandas.index.get_loc 是对索引的单个元素执行此操作的一种方法。例如:df.index.get_loc('Apple')返回 2。但是,我想一次对多个元素执行此操作。除其他外,我尝试了 df.index.get_loc('Apple','Pumpkin'),希望获得列表 [2,3],但这给出了以下错误:ValueError: Invalid fill method. Expecting pad (ffill), backfill (bfill) or nearest. Got pumpkin

是否有一个函数可以让我一次获取多个整数位置?

python indexing dataframe pandas

5
推荐指数
1
解决办法
1703
查看次数

LaTeX 在绘图标题中使用循环

我刚刚学会了如何将(有限数量的)LaTeX 表达式插入到我的绘图标题中 expression(<LaTeX code>)。如何使用循环生成标题中包含 LaTeX 的绘图?例如,假设我有:

par(mfrow = c(2,2))

x <- seq(1,10,0.1)
y <- sin(x)

plot(x, y, main = expression(sigma[1]))
plot(x, y, main = expression(sigma[2]))
Run Code Online (Sandbox Code Playgroud)

这会产生所需的输出: 在此输入图像描述

如何通过用循环替换最后两行来实现相同的输出?我试过

par(mfrow = c(2,2))
for (i in 1:2){
    plot(x, y, main = expression(sigma[i]))
}
Run Code Online (Sandbox Code Playgroud)

但 thei没有被解释为变量: 在此输入图像描述

有什么解决办法吗?

plot latex r

5
推荐指数
1
解决办法
239
查看次数

如何在 scipy.optimize.minimize 中隐藏 `delta_grad == 0.0` 警告?

我有一个循环,使用 scipy.optimize.minimize 执行数百次优化。不幸的是,我不断收到这个恼人的警告:

C:\Users\Leonidas\Anaconda3\lib\site-packages\scipy\optimize\_hessian_update_strategy.py:186: UserWarning: delta_grad == 0.0. Check if the approximated function is linear. If the function is linear better results can be obtained by defining the Hessian as zero instead of using quasi-Newton approximations.
  'approximations.', UserWarning)
Run Code Online (Sandbox Code Playgroud)

因为我正在运行数百次优化,所以这个警告在循环期间出现了几十次,它只会使控制台变得混乱并掩盖程序输出的其余部分。有没有办法

  1. 检查此警告是否已显示,如果是,则不再显示,或者
  2. 完全压制警告?

python warnings scipy scipy-optimize scipy-optimize-minimize

3
推荐指数
1
解决办法
2114
查看次数

如何在实线上方绘制散点图

我有两对 x 和 y 值,一对绘制为线图(蓝色),另一对绘制为散点图(红色)。这些点重叠,并且蓝色实线绘制在红点之上,导致仅红点的非重叠部分可见。我希望这是相反的:我希望红点全部位于蓝线之上,以便红点全部完全可见,而蓝线在重叠点处被遮挡。对于如何做到这一点有什么建议吗?

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0,10,20)
x2 = np.linspace(0,10,500)

y1 = np.sin(x1)
y2 = np.sin(x2)

plt.plot(x2,y2, color = 'b')
plt.scatter(x1,y1,marker = 'o', s = 6, color = 'r')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python plot matplotlib scatter-plot

1
推荐指数
1
解决办法
3333
查看次数