我需要对列表进行排序,然后返回一个列表,其中包含列表中已排序项的索引.例如,如果我要排序的列表是[2,3,1,4,5],我需要[2,0,1,3,4]返回.
这个问题是在字节上发布的,但我想我会在这里重新发布. http://bytes.com/topic/python/answers/44513-sorting-list-then-return-index-sorted-item
我特别需要根据对象的属性对对象列表进行排序.然后,我需要重新排序相应的列表以匹配新排序列表的顺序.
有没有办法做到这一点?
我在python脚本中隐藏了一些简单的数学,并得到以下警告:
"警告:划分为零除以".
为了提供一些背景,我拿着两个值,并试图找到价值的百分比差值(a - b) / a,如果它超过一定的范围内,那么对其进行处理,但有时值a或b为零.
我想摆脱这个特定的警告(在一个特定的行),但到目前为止我找到的所有信息似乎告诉我如何停止所有警告(我不想要).
当我以前编写shell脚本时,我可以做这样的事情
code...
more code 2 > error.txt
even more code
Run Code Online (Sandbox Code Playgroud)
在那个例子中,我会得到'代码'和'甚至更多代码'命令的警告,但不是第二行.
这可能吗?
我肯定在这里遗漏了一些简单的东西.尝试在大多数具有相同列名的pandas中合并两个数据帧,但右侧数据框有一些左侧没有的列,反之亦然.
>df_may
id quantity attr_1 attr_2
0 1 20 0 1
1 2 23 1 1
2 3 19 1 1
3 4 19 0 0
>df_jun
id quantity attr_1 attr_3
0 5 8 1 0
1 6 13 0 1
2 7 20 1 1
3 8 25 1 1
Run Code Online (Sandbox Code Playgroud)
我尝试加入外连接:
mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")
Run Code Online (Sandbox Code Playgroud)
但那会产生:
Left data columns not unique: Index([....
Run Code Online (Sandbox Code Playgroud)
我还指定了一个要加入的列(on ="id",例如),但是复制除"id"之外的所有列,如attr_1_x,attr_1_y,这是不理想的.我还将整个列列表(有很多)传递给"on":
mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer", on=list(df_may.columns.values))
Run Code Online (Sandbox Code Playgroud)
产量:
ValueError: Buffer has wrong number of dimensions …Run Code Online (Sandbox Code Playgroud) 我有一个DataFrame看起来像
Emp1 Empl2 date Company
0 0 0 2012-05-01 apple
1 0 1 2012-05-29 apple
2 0 1 2013-05-02 apple
3 0 1 2013-11-22 apple
18 1 0 2011-09-09 google
19 1 0 2012-02-02 google
20 1 0 2012-11-26 google
21 1 0 2013-05-11 google
Run Code Online (Sandbox Code Playgroud)
我想通过公司和日期设置MultiIndex为这个DataFrame.目前它有一个默认索引.我在用df.set_index(['Company', 'date'], inplace=True)
df = pd.DataFrame()
for c in company_list:
row = pd.DataFrame([dict(company = '%s' %s, date = datetime.date(2012, 05, 01))])
df = df.append(row, ignore_index = True)
for …Run Code Online (Sandbox Code Playgroud) scipy.stats分布直方图可制成的scipy.stats正常随机变量看到分布的样子.
% matplotlib inline
import pandas as pd
import scipy.stats as stats
d = stats.norm()
rv = d.rvs(100000)
pd.Series(rv).hist(bins=32, normed=True)
Run Code Online (Sandbox Code Playgroud)
其他发行版是什么样的?
将Pandas DataFrame的所有列乘以存储在Series?中的列向量的最佳方法是什么?我以前在Matlab中这样做repmat(),在Pandas中不存在.我可以使用np.tile(),但每次来回转换数据结构看起来很难看.
谢谢.
我正在做一些数据修改,如果我可以在内存数据库中粘贴一堆字典,然后对它进行简单的查询,那将会更加简单.
例如,类似于:
people = db([
{"name": "Joe", "age": 16},
{"name": "Jane", "favourite_color": "red"},
])
over_16 = db.filter(age__gt=16)
with_favorite_colors = db.filter(favorite_color__exists=True)
Run Code Online (Sandbox Code Playgroud)
但有三个混淆因素:
那么,这样的事情存在吗?或者我需要一起解决问题吗?
我正在开发一个代码库,其中有很多由以前的开发人员编写的类型提示。在某些时候,我注意到这些提示没有进行类型检查,如果我想检查它们,我需要在构建中添加一个步骤。我对 python 很熟悉,但从未使用过类型提示,所以我读了很多关于它们的文章,但我仍然有很多东西需要理解。最终我得出结论,mypy 是用于对这些类型提示进行类型检查的主程序。所以我 pip 安装了 mypy 并运行mypy .。我遇到了很多这样的错误;
error: Skipping analyzing 'setuptools': found module but no type hints or library stubs
error: Skipping analyzing 'numpy': found module but no type hints or library stubs
error: Skipping analyzing 'tensorflow.compat.v1': found module but no type hints or library stubs
error: Skipping analyzing 'tensorflow': found module but no type hints or library stubs
Run Code Online (Sandbox Code Playgroud)
我很惊讶这些默认情况下被视为错误,因为我读到的有关类型提示的所有内容都强调它们是可选的。所以我的第一个问题是,为什么 mypy 将上述内容视为显示停止错误而不是简单的警告?
然后我用谷歌搜索错误消息并找到mypy 文档的此页面。这可以说是非常清楚的,但令我困惑的是,它似乎表明这个错误是一个应该解决的大问题。它提供了多个选项来解决它,增加工作量,然后它们最终告诉您 CLI 标志将消除所有错误。当然,大多数项目都会导入不使用类型提示的库,并且需要使用此标志?
由于这些线索,我决定我应该继续尝试,寻找包裹。接下来让我困惑的是,它似乎无法找到我所有导入的类型提示。我不希望更多晦涩的库有书面类型提示,但肯定有人为 numpy 或 pytest 编写了它们?types- …
我正在构建一个新的方法来解析一个DataFrame与Vincent兼容的格式.这需要一个标准Index(文森特不能解析MultiIndex).
有没有办法检测熊猫DataFrame是否有MultiIndex?
In: type(frame)
Out: pandas.core.index.MultiIndex
Run Code Online (Sandbox Code Playgroud)
我试过了:
In: if type(result.index) is 'pandas.core.index.MultiIndex':
print True
else:
print False
Out: False
Run Code Online (Sandbox Code Playgroud)
如果我尝试没有引用,我得到:
NameError: name 'pandas' is not defined
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
(一旦我有了MultiIndex,我就会重置索引并将两列合并为表示阶段的单个字符串值.)
我是Python的新手,并且已经通过几本书来解决它.除了可视化之外,一切都很棒.我真的不喜欢matplotlib和Bokeh需要太重的堆栈.
我想要的工作流程是:
使用ipython笔记本中的pandas进行数据分析 - >使用sublimetext2中的d3进行可视化
但是,作为Python和d3的新手,我不知道将我的pandas数据框导出到d3的最佳方法.我应该把它作为csv吗?JSON?还是有更直接的方式?
附带问题:是否有任何(合理的)方法在ipython笔记本中执行所有操作而不是切换到sublimetext?
任何帮助,将不胜感激.
python ×8
pandas ×5
data-munging ×3
dataframe ×2
d3.js ×1
database ×1
distribution ×1
ipython ×1
matplotlib ×1
multiplying ×1
mypy ×1
scipy ×1
statistics ×1
type-hinting ×1