我有一个像这样的数据框
import pandas as pd
df = pd.DataFrame(
{
'C1': list('aabbab'),
'C2': list('abbbaa'),
'value': range(11, 17)
}
)
C1 C2 value
0 a a 11
1 a b 12
2 b b 13
3 b b 14
4 a a 15
5 b a 16
Run Code Online (Sandbox Code Playgroud)
我想生成这样的字典:
{'C1': {'a': {1: 11, 2: 12, 3: 15}, 'b': {1: 13, 2: 14, 3: 16}},
'C2': {'a': {1: 11, 2: 15, 3: 16}, 'b': {1: 12, 2: 13, 3: 14}}}
Run Code Online (Sandbox Code Playgroud)
逻辑如下:
在df我转到该列 …
我有一个shell脚本,可以获取域的whois信息,输出taken或availableshell,具体取决于域.
我想执行脚本,并能够在我的Python脚本中读取这个值.
我一直在玩,subprocess.call但无法弄清楚如何获得输出.
例如,
subprocess.call('myscript www.google.com', shell=True)
Run Code Online (Sandbox Code Playgroud)
将输出taken到shell.
我有一个HashMap,其键是id,其值是文本:
HashMap<String,String> textMap = new HashMap<String,String>();
textMap.put("id_1","She");
textMap.put("id_2","has");
textMap.put("id_3","a");
textMap.put("id_4","neck");
textMap.put("id_5","pain");
//.. more elements in textMap
Run Code Online (Sandbox Code Playgroud)
我想找到一个短语的相关id,比如'颈部疼痛',所以在这种情况下,结果应该是id_4和id_5.
任何人都可以建议一个有效的算法来匹配短语与ids?
对不起,我忘了包含一个重要的条件.我有短语和单词的偏移量,比如"start_5_end_14",这意味着5应该是"颈部"的开始,因为"她"的开头为0.但是,使情况复杂化的是偏移可能不正确.
假设我有一个清单
l1 = []
Run Code Online (Sandbox Code Playgroud)
另一个清单
l2 = ['a','b']
Run Code Online (Sandbox Code Playgroud)
和两个变量
u = 1
z = 2
Run Code Online (Sandbox Code Playgroud)
现在我想将l2和l1两个变量作为列表添加到l1中.可以使用append分两步完成:
l1.append(l2)
l1.append(list((u,z)))
Run Code Online (Sandbox Code Playgroud)
这给了我想要的输出
[['a', 'b'], [1, 0]]
Run Code Online (Sandbox Code Playgroud)
但有点像
l1.append(l2, list((u,z)))
Run Code Online (Sandbox Code Playgroud)
不起作用.有没有办法获得我在一个漂亮的oneliner中的两个步骤获得的相同输出,即可以同时通过两个列表附加列表?
我正在尝试计算python 中稀疏矩阵的谱半径。这就是我所拥有的:
from scipy.sparse.linalg import eigs
from scipy import sparse
w = sparse.rand(10, 10, 0.1)
spec_radius = max(abs(eigs(w)[0]))
Run Code Online (Sandbox Code Playgroud)
其中 的值w被缩放到 的范围内[-1,1]。然而,运行该命令每次都会给出不同的结果:
>>> print max(abs(eigs(w)[0]))
4.51859016293e-05
>>> print max(abs(eigs(w)[0]))
4.02309443625e-06
>>> print max(abs(eigs(w)[0]))
3.7611221426e-05
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?我本以为每次都会一样。我是否误解了这些命令的工作原理?
我有一个这样的列表:
myList = [10,30,40,20,50]
Run Code Online (Sandbox Code Playgroud)
现在我使用numpy's argsort函数来获取排序列表的索引:
import numpy as np
so = np.argsort(myList)
Run Code Online (Sandbox Code Playgroud)
这给了我输出:
array([0, 3, 1, 2, 4])
Run Code Online (Sandbox Code Playgroud)
当我想使用它对数组进行排序时so效果很好:
myArray = np.array([1,2,3,4,5])
myArray[so]
array([1, 4, 2, 3, 5])
Run Code Online (Sandbox Code Playgroud)
但是当我将它应用到另一个列表时,它不起作用但会抛出错误
myList2 = [1,2,3,4,5]
myList2[so]
Run Code Online (Sandbox Code Playgroud)
类型错误:只有具有一个元素的整数数组才能转换为索引
现在,我如何在so不使用 for 循环且不先将此列表转换为数组的情况下对另一个列表进行排序?
我正在尝试填充矩阵的偏移对角线:
loss_matrix = np.zeros((125,125))
np.diagonal(loss_matrix, 3).fill(4)
ValueError: assignment destination is read-only
Run Code Online (Sandbox Code Playgroud)
两个问题:
1)如果不迭代索引,如何设置numpy数组的偏移对角线?
2)为什么结果np.diagonal只读?numpy.diagonal的文档读取:"在NumPy 1.10中,它将返回读/写视图,写入返回的数组将改变原始数组."
np.__version__
'1.10.1'
Run Code Online (Sandbox Code Playgroud) 我有一个 numpy 数组,其中包含前 2 个标签:
n = [['20011' '20048']
['20011' '20048']
['20011' '20048']
['20011' '20048']]
Run Code Online (Sandbox Code Playgroud)
我想以相反的顺序获取它们:
[['20048' '20011']
['20048' '20011']
['20048' '20011']]
Run Code Online (Sandbox Code Playgroud)
我怎样才能在保持格式不变的情况下做到这一点?
到目前为止的代码:
n = model1.classes_[order[:,-5:]]
print(n)
r = [p[::-1] for p in n]
print(r)
Run Code Online (Sandbox Code Playgroud)
输出:
[array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5')]
Run Code Online (Sandbox Code Playgroud)
需要尝试删除dtypes并仅保留反转数组。
这是我的数据帧
import pandas as pd
df = pd.DataFrame({'A': ['one', 'one', 'two', 'two', 'one'] ,
'B': ['Ar', 'Br', 'Cr', 'Ar','Ar'] ,
'C': ['12/15/2011', '11/11/2001', '08/30/2015', '07/3/1999','03/03/2000' ],
'D':[1,7,3,4,5]})
Run Code Online (Sandbox Code Playgroud)
我的目标是按列A进行分组,并按列对分组结果进行排序B.
这是我想出的:
sort_group = df.sort_values('B').groupby('A')
Run Code Online (Sandbox Code Playgroud)
我希望分组操作不会扭曲顺序,但它不起作用,也不返回数据帧,而是返回groupby对象
<pandas.core.groupby.DataFrameGroupBy object at 0x0000000008B190B8>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我有两个这样的数据框:
import pandas as pd
left = pd.DataFrame({'id1': ['a', 'b', 'c'], 'val1': [1, 2, 3]})
right = pd.DataFrame({'ID2': ['a', 'c', 'd'], 'val2': [4, 5, 6]})
id1 val1
0 a 1
1 b 2
2 c 3
ID2 val2
0 a 4
1 c 5
2 d 6
Run Code Online (Sandbox Code Playgroud)
我想合并这两个数据帧,进行内部合并,删除ID2,然后也用作id1新索引。我想要的输出如下所示:
val1 val2
id1
a 1 4
c 3 5
Run Code Online (Sandbox Code Playgroud)
我目前按如下方式执行此操作:
res = pd.merge(left, right, left_on='id1', right_on='ID2', how='inner').drop('ID2', axis=1).set_index('id1')
Run Code Online (Sandbox Code Playgroud)
这给了我想要的输出。
我的问题是是否已经有一个选项可以让我
a)在执行内部合并时删除键列,因为这样就会有两个相同的列
和/或
b) 直接将索引设置为用于合并过程的关键列之一。
我现在这样做的方式是要走的路还是已经有更智能的/内置的东西了?