小编yat*_*atu的帖子

如何将两列数组转换为具有出现次数的矩阵?

我有以下 numpy 数组:

import numpy as np

pair_array = np.array([(205, 254), (205, 382), (254, 382), (18, 69), (205, 382), 
                       (31, 183), (31, 267), (31, 382), (183, 267), (183, 382)])

print(pair_array)

#[[205 254]
# [205 382]
# [254 382]
# [ 18  69]
# [205 382]
# [ 31 183]
# [ 31 267]
# [ 31 382]
# [183 267]
# [183 382]]
Run Code Online (Sandbox Code Playgroud)

有没有办法将此数组转换为包含所有可能组合的出现次数的对称熊猫数据框?我期待这样的事情:

#     18  31  69 183 205 254 267 382 
#  18  0   0   1   0   0 …
Run Code Online (Sandbox Code Playgroud)

python numpy networkx adjacency-matrix pandas

30
推荐指数
2
解决办法
994
查看次数

在列表的开头和结尾强制元素

如何修改此列表以使所有列表p's出现在开头,q's结尾处,以及它们之间的值按字母顺序排序?

l = ['f','g','p','a','p','c','b','q','z','n','d','t','q']
Run Code Online (Sandbox Code Playgroud)

所以我想:

['p','p','a','b','c','d','f','g','n','t','z','q','q']
Run Code Online (Sandbox Code Playgroud)

python sorting list

26
推荐指数
4
解决办法
1332
查看次数

用相同的键合并两个dicts

我有以下两个玩具序列

d1 = {
 'a': [2,4,5,6,8,10],
 'b': [1,2,5,6,9,12],
 'c': [0,4,5,8,10,21]
 }
d2 = {
 'a': [12,15],
 'b': [14,16],
 'c': [23,35]
  }
Run Code Online (Sandbox Code Playgroud)

我想得到一个独特的字典,我在第一个字典值之后堆叠第二个字典值,在同一个方括号内.

我尝试了以下代码

d_comb = {key:[d1[key], d2[key]] for key in d1}
Run Code Online (Sandbox Code Playgroud)

但是我获得的输出在每个键的列表中有两个列表,即

{'a': [[2, 4, 5, 6, 8, 10], [12, 15]],
 'b': [[1, 2, 5, 6, 9, 12], [14, 16]],
 'c': [[0, 4, 5, 8, 10, 21], [23, 35]]}
Run Code Online (Sandbox Code Playgroud)

而我想获得

{'a': [2, 4, 5, 6, 8, 10, 12, 15],
 'b': [1, 2, 5, 6, 9, 12, 14, 16],
 'c': [0, …
Run Code Online (Sandbox Code Playgroud)

python dictionary list

24
推荐指数
4
解决办法
1284
查看次数

检查 pandas 列是否包含列表中的所有元素

我有一个这样的 df:

frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']})
Run Code Online (Sandbox Code Playgroud)

以及项目清单:

letters = ['a','c']
Run Code Online (Sandbox Code Playgroud)

我的目标是从中获取frame至少包含 2 个元素的所有行letters

我想出了这个解决方案:

for i in letters:
    subframe = frame[frame['a'].str.contains(i)]
Run Code Online (Sandbox Code Playgroud)

这给了我想要的东西,但它可能不是可扩展性方面的最佳解决方案。有没有“矢量化”的解决方案?谢谢

python pandas

23
推荐指数
6
解决办法
2万
查看次数

在两个数据帧之间找到相等的列

我有两个pandas数据框,a并且b

a1   a2   a3   a4   a5   a6   a7
1    3    4    5    3    4    5
0    2    0    3    0    2    1
2    5    6    5    2    1    2
Run Code Online (Sandbox Code Playgroud)

b1   b2   b3   b4   b5   b6   b7
3    5    4    5    1    4    3
0    1    2    3    0    0    2
2    2    1    5    2    6    5
Run Code Online (Sandbox Code Playgroud)

这两个数据框包含完全相同的数据,但顺序不同,列名也不同。根据两个数据框中的数字,我希望能够a将每个列名与b.

这并不像简单地将 的第一行a与第一行进行比较那么容易,b因为存在重复的值,例如两者a4a7都有值,5 …

python python-3.x pandas

18
推荐指数
4
解决办法
848
查看次数

在2d数组中填充边界框

我有一个2D numpy数组,看起来像

array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy bounding-box numpy-ndarray

17
推荐指数
2
解决办法
1175
查看次数

按键值对对列表的字典排序

我正在尝试对列表字典中的值进行排序,并从中创建一个新列表。数据如下:

{
    'fbi': [229, 421, 586, 654, 947, 955, 1095, 1294, 1467, 2423, 3063, 3478, 3617, 3730, 3848, 3959, 4018, 4136, 4297, 4435, 4635, 4679, 4738, 5116, 5211, 5330, 5698, 6107, 6792, 6906, 7036], 
    'comey': [605, 756, 1388, 1439, 1593, 1810, 1959, 2123, 2506, 3037, 6848], 
    'hillary': [14, 181, 449, 614, 704, 1079, 1250, 2484, 2534, 2659, 3233, 3374, 3488, 3565, 4076, 4756, 4865, 6125, 7109]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试的是在其中找到20个最小值,并获取其对应键的列表。例如,前三个最小值是14(希拉里),181(希拉里)和229(fbi)。因此,如何获得这样的列表:

{
    'fbi': [229, 421, 586, 654, 947, 955, 1095, 1294, 1467, 2423, …
Run Code Online (Sandbox Code Playgroud)

python dictionary list python-3.x

17
推荐指数
2
解决办法
509
查看次数

计算两个列表中的相同对

我的清单有

a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
Run Code Online (Sandbox Code Playgroud)

我需要数一下a[i]==b[i]

对于以上示例,答案应为

6
Run Code Online (Sandbox Code Playgroud)

答案的详细说明是

a[0]==b[0] (1==1)
a[1]==b[1] (2==2)
a[2]==b[0] (3==3)
a[4]==b[4] (2==2)
a[8]==b[8] (6==6)
a[9]==b[9] (7==7)
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

16
推荐指数
3
解决办法
1167
查看次数

推断哪些列是日期时间

我有一个巨大的数据框,其中包含许多列,其中许多列都是type的datetime.datetime。问题在于,许多还具有混合类型,包括例如datetime.datetime值和None值(以及可能的其他无效值):

0         2017-07-06 00:00:00
1         2018-02-27 21:30:05
2         2017-04-12 00:00:00
3         2017-05-21 22:05:00
4         2018-01-22 00:00:00
                 ...         
352867    2019-10-04 00:00:00
352868                   None
352869            some_string
Name: colx, Length: 352872, dtype: object
Run Code Online (Sandbox Code Playgroud)

因此导致object类型列。这可以用解决df.colx.fillna(pd.NaT)。问题在于数据框太大,无法搜索单个列。

另一种方法是使用pd.to_datetime(col, errors='coerce'),但是这将强制转换为datetime包含数值的许多列。

我也可以做df.fillna(float('nan'), inplace=True),尽管包含日期的列仍然是object类型,并且仍然会有相同的问题。

我可以采用哪种方法将那些其值确实包含datetime值但也可能包含None,以及可能包含一些无效值的列转换为日期时间(提及,否则pd.to_datetimetry/ except子句中使用a即可)?像是弹性版本pd.to_datetime(col)

python pandas

15
推荐指数
2
解决办法
369
查看次数

带有字符串和整数的列表上的最大/最小功能

我有一个包含字符串和整数的列表,想要找到整数的最小值,没有列表切片.有解决方法吗?

arr = [5,3,6,"-",3,"-",4,"-"]    
for i in range(len(set(arr))):
        cut = min(arr)
Run Code Online (Sandbox Code Playgroud)

非常感谢!

python string list

12
推荐指数
2
解决办法
715
查看次数