在Matlab中,我在for循环期间执行计算,但是如果满足某些条件,我试图找到在for循环期间跳过迭代的方法.我写了一个简单的例子来说明我的问题.
在下面的代码中,for循环将经历迭代1和2并按预期输出到r.r(1)将为1,并且r(2)将为2.一旦for循环运行迭代3,则将值20放入r(3).在发生这种情况之后,我希望for循环跳过接下来的5次迭代并直接进入for循环的迭代8.
for i=1:1:10
if i==3
r(i)=20;
i = i+5;
else
r(i) = i;
end
end
Run Code Online (Sandbox Code Playgroud)
r的实际结果如下:
r =
1 2 20 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
但是,我希望结果看起来类似于以下内容.(请注意,我不打算用0填充所需的r(4):r(7),而是完全跳过循环迭代4到7.)
r =
1 2 20 0 0 0 0 8 9 10
Run Code Online (Sandbox Code Playgroud)
如果有人有建议,那将非常感激.谢谢!
根据https://github.com/pandas-dev/pandas/pull/21251/files/09e5b456e1af5cde55f18f903ab90c761643b05a,我们应该能够将 DataFrame 附加到新的 XLSX 表。
根据文档,我尝试了以下操作:
>>> import pandas as pd
>>>
... d1 = pd.DataFrame({"A":['Bob','Joe', 'Mark'],
... "B":['5', '10', '20']})
>>> d2 = pd.DataFrame({"A":['Jeffrey','Ann', 'Sue'],
... "B":['1', '2', '3']})
>>>
>>> # Create XLSX document for ticker
... writer = pd.ExcelWriter('test.xlsx',engine='openpyxl')
>>> d1.to_excel(writer,sheet_name='d1')
>>> writer.save()
>>>
>>> writer = pd.ExcelWriter('test.xlsx',engine='openpyxl', mode='a')
>>> d2.to_excel(writer,sheet_name='d2')
>>> writer.save()
>>>
>>> pd.__version__
'0.23.4' # Just updated this per a comment
>>>
>>>
Run Code Online (Sandbox Code Playgroud)
结果是一个名为“test.xlsx”的工作簿,带有一个选项卡“d2”。
如何防止工作簿/工作表表单被覆盖?
给定以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.uniform(-1,1,size=(6, 2)), columns=list('AB'))
A B
0 0.179713 0.341367
1 -0.439868 0.999864
2 -0.253476 -0.816107
3 -0.829449 -0.562657
4 0.174300 0.055969
5 0.922375 0.987108
Run Code Online (Sandbox Code Playgroud)
如何计算特定列大于 0 的行/条目的百分比并且仅返回浮点值?
以下代码返回一个 Series,其中 A 的输出覆盖 B 的输出。
a = df[df['A'] > 0].count()/df['A'].count()
A 0.5
B 0.5
dtype: float64
Run Code Online (Sandbox Code Playgroud)
但是,所需的输出只是一个浮点值,而不是一个系列。
Desired output:
0.5
Run Code Online (Sandbox Code Playgroud) 我不确定我是否应该或不应该创建一个新问题,因为接受的答案不起作用。请指教。我只是回答同样的问题作为答案吗?这是同一个问题:如何使用 openpyxl 对工作簿中的 Excel 工作表/标签进行排序。我不确定它是否由于用户问题(通常是)或较旧/较新版本的 openpyxl 而不起作用。
这是我的代码:
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet("B")
ws2 = wb.create_sheet("A")
ws3 = wb.create_sheet("C")
ws4 = wb.create_sheet("D")
wb._sheets = sorted(wb._sheets) #Error comes up at this line
wb.save('test_tabs.xlsx')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: '<' not supported between instances of 'Worksheet' and 'Worksheet'
Run Code Online (Sandbox Code Playgroud)
因此,我尝试手动对工作表列表进行排序:
>>> type(wb._sheets)
<class 'list'>
>>> wb._sheets
[<Worksheet "Sheet">, <Worksheet "B">, <Worksheet "A">, <Worksheet "C">, <Worksheet "D">]
>>> wb._sheets = [<Worksheet "A">, <Worksheet "B">, <Worksheet "C">, <Worksheet "D">, <Worksheet "Sheet">] …Run Code Online (Sandbox Code Playgroud) python ×3
pandas ×2
continue ×1
dataframe ×1
excel ×1
for-loop ×1
matlab ×1
openpyxl ×1
python-3.x ×1
xlsxwriter ×1