这看起来很简单但我找不到一个例子或者自己解决这个问题.如何使用ipywidget小部件创建或返回可在以下单元格中使用的python变量/对象(如列表或字符串)?
我得到了如何使用pd.MultiIndex.from_tuples()以改变类似的东西
Value
(A,a) 1
(B,a) 2
(B,b) 3
Run Code Online (Sandbox Code Playgroud)
成
Value
Caps Lower
A a 1
B a 2
B b 3
Run Code Online (Sandbox Code Playgroud)
但是如何更改表单中的列元组
(A, a) (A, b) (B,a) (B,b)
index
1 1 2 2 3
2 2 3 3 2
3 3 4 4 1
Run Code Online (Sandbox Code Playgroud)
进入表格
Caps A B
Lower a b a b
index
1 1 2 2 3
2 2 3 3 2
3 3 4 4 1
Run Code Online (Sandbox Code Playgroud)
非常感谢.
编辑:我有一个元组列标题的原因是当我将具有单个级别列的DataFrame加入到具有多级列的DataFrame时,它将多列转换为字符串格式的元组并将单个级别保留为单个串.
编辑2 - 替代解决方案:如上所述,此处的问题是通过join具有不同列级别大小的问题产生的.这意味着多列被缩减为字符串元组.解决这个问题,在我用于 …
我有一个A任意尺寸mx 的矩阵,n并希望用一个等式填充它,例如,对于每个元素a_ij A,i = 1,...,m和j = 1,...,n,我想,
a_ij = i ^ 2 + j ^ 2.
在手动填写的Matlab中,它看起来与此类似,
A = [1^2+1^2, 1^2+2^2, ..., 1^2+j^2, ..., 1^2+n^2;
2^2+1^2, 2^2+2^2, ..., 2^2+j^2, ..., 2^2+n^2;
.
.
.
i^2+1^2, i^2+2^2, ..., i^2+j^2, ..., i^2+n^2;
.
.
.
m^2+1^2, m^2+2^2, ..., m^2+j^2, ..., m^2+n^2]
Run Code Online (Sandbox Code Playgroud)
所以前几个术语是:
[2, 5, 10,17,...
5, 8, 13,20,...
10,13,18,25,...
17,20,25,32,...
]
Run Code Online (Sandbox Code Playgroud) 对于单级索引列,我会执行以下操作
arrays = [['one', 'two', ]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(pd.np.random.randn(3, 2), index=['A', 'B', 'C'], columns=index)
print(df)
first one two
A 0.919921 -1.407321
B 1.100169 -0.927249
C -0.520308 0.619783
print(df.assign(one=lambda x: x.one * 100))
first one two
A 144.950877 0.633516
B -0.593133 -0.630641
C -5.661949 -0.738884
Run Code Online (Sandbox Code Playgroud)
现在,当我有一个 MultiIndex 列时,我可以使用访问所需的列,.loc但我无法将其分配给任何内容,因为它出现了错误SyntaxError: keyword can't be an expression。
这是一个例子,
arrays = [['bar', 'bar'],
['one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df …Run Code Online (Sandbox Code Playgroud) 在MATLAB中格式化日期时间,datetrings和datenums时,有两种不同的方式表示分钟和月份,分别为M和m或m和M. 具体来说,当您使用datestr时使用它与使用datetime时不同.这是一个例子,
startdate='01/05/2015 12:35:22';
startdt=datetime(startdate,'InputFormat','dd/MM/yyyy HH:mm:ss');
startstr=datestr(startdt,'dd/mm/yyyy HH:MM:SS');
Run Code Online (Sandbox Code Playgroud)
看看我们如何使用小写字母m表示月份和日期时间我们使用大写字母M表示月份.
为什么MATLAB具有适用于这些命令的不同日期格式?在我的代码中实现一致样式的日期格式的最佳方法是什么?
考虑到可扩展性和可读性,其中哪一个被认为是更加pythonic?使用enumerate:
group = ['A','B','C']
tag = ['a','b','c']
for idx, x in enumerate(group):
print(x, tag[idx])
Run Code Online (Sandbox Code Playgroud)
或使用zip:
for x, y in zip(group, tag):
print(x, y)
Run Code Online (Sandbox Code Playgroud)
我问的原因是我一直在混合两者.我应该遵循一种标准方法,但它应该是什么?
我正在尝试在 python 中模拟导入以进行测试。我的代码看起来像这样。
"""Python file description."""
import sys
import pytest
import datetime as dt
from unittest.mock import Mock
sys.modules['module_A'] = Mock()
from module_to_test import function_to_test
Run Code Online (Sandbox Code Playgroud)
我需要模拟module_A作为module_to_test.
保存时,VSCode 会自动按字母顺序排序,因此在尝试从具有依赖项的模块导入后创建 Mock。
如何防止排序导入对文件子集进行排序?这可能是通过文件列表、glob、regex 或类似的?
测试文件的全局模式 ./tests/test_*.py.
更新- 下面发布了部分解决方案。
我有一个包含主要和次要蜱的情节。它是一个分组条形图,我不希望图例描述每个类别,而是希望每个类别都显示在小刻度中。然后我希望每个组在主要刻度中都有名称。
我可以在某种程度上做到这一点,但主要刻度似乎覆盖了同一位置的次要刻度。我怎样才能关闭它?
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{
0: [84, 41],
1: [0, 0],
2: [18.5, 3.5],
3: [65.5, 124],
4: [0.5, 0]
},
index = ['A', 'B']
)
ax = df.plot.bar(
rot=0,
legend=False,
color=['gray', 'red', 'green', 'lightblue', 'darkblue',],
)
labels = df.unstack().index
label_x, label_mode = [], []
for rect, idx in zip(ax.patches, labels):
print(rect, idx)
label_mode.append(idx[0])
label_x.append(rect.xy[0] + (rect.get_width() * 0.5))
ax.set_xticklabels(['A', 'B'])
ax.set_xticks(label_x, minor=True)
ax.set_xticklabels(label_mode, minor=True)
ax.tick_params(axis='x', which='minor', length=0)
ax.tick_params(axis='x', which='major', length=10, …Run Code Online (Sandbox Code Playgroud) 我希望使用cellfun类似于如何使用bsxfun在nx1单元格和1x1单元格上应用函数,即对于bsxfun,
multi = bsxfun(@times, rand(1,10), 2)
Run Code Online (Sandbox Code Playgroud)
然而,当在cellfun中做这样的事情时,它会抱怨细胞大小不一样.我该如何解决这个问题?
要用于单元格示例:
我的实际问题非常简单,我可以看到其他方法,但我最初的直觉是使用cellfun.不能把我带到这里.这是我的实际问题,
use_var = {[0,1,0,1,1,1,1,0]}; rule_dep = {[1,3],[1,2,4],[3,5,7],[5],[4,8]};
Run Code Online (Sandbox Code Playgroud)
我现在希望每个rule_dep都使用indexuse_var.我的第一次尝试是,
use_rule = cellfun(@(x,y) y{x}, rule_depend, use_var, 'Uniformoutput', false);
Run Code Online (Sandbox Code Playgroud)
但会引发尺寸问题.
我有一个列向量,是其他多列的平均值(在向量中).我希望索引矩阵的每个元素都大于平均向量.我能够一次做到这一点:
idx = y1<y2
Run Code Online (Sandbox Code Playgroud)
但是,如果y2是矩阵,则会出现错误.我目前解决的问题是:
y1 = [y1;y1]
Run Code Online (Sandbox Code Playgroud)
但这是相当不优雅的,并没有考虑y2到未知大小.问候
我有以下DataFrame两组动物和每天吃多少食物,
df = pd.DataFrame({'animals': ['cat', 'cat', 'dog', 'dog', 'rat',
'cat', 'rat', 'rat', 'dog', 'cat'],
'food': [1, 2, 2, 5, 3, 1, 4, 0, 6, 5]},
index=pd.MultiIndex.from_product([['group1'] + ['group2'],
list(range(5))])
).rename_axis(['groups', 'day'])
df
animals food
groups day
group1 0 cat 1
1 cat 2
2 dog 2
3 dog 5
4 rat 3
group2 0 cat 1
1 rat 4
2 rat 0
3 dog 6
4 cat 5
Run Code Online (Sandbox Code Playgroud)
我可以"映射"/将其转换为新列,以了解每天应该给每只动物多少食物daily_meal.
df['daily_meal'] = df.groupby(['animals', 'groups']).transform('mean')
df
animals food …Run Code Online (Sandbox Code Playgroud) 我想使用三组数据在MATLAB中创建一个散点图.X,Y和c.X并且Y是它们各自的轴图,但是c在每个散点点分类上保存信息(整数值).我希望将每个分类图作为单独的颜色.这些整数值很简单,可以转换成相应的颜色选择,所以没有问题.目前,C作为我的颜色选择,我正在使用,
hold on
for k=1:K
scatter(X(c==k,:),Y(c==k),[],C(k,:),'filled');
end
Run Code Online (Sandbox Code Playgroud)
我对这种动机是希望建立一个UpdateFcn在DataCursorManager为了显示与数据光标每个点的日期.我无法使用多个散点图进行此操作,并且这是解决问题的最简单方法.
matlab ×5
pandas ×4
python ×4
multi-index ×2
colors ×1
columnname ×1
datetime ×1
for-loop ×1
ipython ×1
ipywidgets ×1
iterable ×1
matplotlib ×1
matrix ×1
plot ×1
scatter ×1
scatter-plot ×1