草庐IT

Pythonic

全部标签

Pythonic/有效的方法从每个包含字符串对象的 Pandas 数据框单元格中去除空格

我正在将CSV文件读入DataFrame。我需要从所有类似字符串的单元格中去除空格,而在Python2.7中保持其他单元格不变。这是我正在做的事情:defremove_whitespace(x):ifisinstance(x,basestring):returnx.strip()else:returnxmy_data=my_data.applymap(remove_whitespace)Pandas有没有更好或更惯用的方法来做到这一点?有没有更有效的方法(也许是按列做事)?我已经尝试寻找一个明确的答案,但关于这个主题的大多数问题似乎是如何从列名本身中去除空格,或者假设单元格都是字符串。

python - 区分字符串和列表的 Pythonic 方式是什么?

对于我的程序,我有很多地方对象可以是字符串或包含字符串和其他类似列表的列表。这些通常是从JSON文件中读取的。他们都需要区别对待。现在,我只是在使用isinstance,但这感觉不是最Pythonic的方式,所以有人有更好的方式吗? 最佳答案 无需导入模块,isinstance()、str和unicode(3之前的版本——没有unicodein3!)将为您完成这项工作。Python2.x:Python2.6.1(r261:67515,Feb112010,00:51:29)[GCC4.2.1(AppleInc.build5646)]o

collections - 以降序遍历 collections.Counter() 实例的 Pythonic 方式?

在Python2.7中,我想以递减计数顺序迭代collections.Counter实例。>>>importcollections>>>c=collections.Counter()>>>c['a']=1>>>c['b']=999>>>cCounter({'b':999,'a':1})>>>forxinc:printxab在上面的示例中,元素似乎按照它们添加到Counter实例的顺序进行迭代。我想从最高到最低遍历列表。我看到Counter的字符串表示是这样做的,只是想知道是否有推荐的方法。 最佳答案 您可以遍历c.most_comm

list - 识别列表中连续重复项的最 Pythonic 方法是什么?

我有一个整数列表,我希望能够识别连续的重复block:也就是说,我想生成一个保持顺序的重复列表,其中每个重复包含(int_in_question,出现次数)。例如,如果我有一个类似的列表:[0,0,0,3,3,2,5,2,6,6]我希望结果是:[(0,3),(3,2),(2,1),(5,1),(2,1),(6,2)]我有一个相当简单的方法,使用for循环、临时和计数器:result_list=[]current=source_list[0]count=0forvalueinsource_list:ifvalue==current:count+=1else:result_list.app

合并两个重叠列表的Pythonic方法,保留顺序

好的,所以我有两个列表,如下所示:它们可以并且将会有重叠的项目,例如,[1,2,3,4,5],[4,5,6,7]。重叠中不会有额外的项目,例如,这不会发生:[1,2,3,4,5],[3.5,4,5,6,7]这些列表不一定是有序的,也不一定是唯一的。[9,1,1,8,7],[8,6,7].我想合并列表以保留现有顺序,并在最后一个可能的有效位置进行合并,并且不会丢失任何数据。此外,第一个列表可能很大。我目前的工作代码是这样的:master=[1,3,9,8,3,4,5]addition=[3,4,5,7,8]defmerge(master,addition):n=1whilen我想知道的是

python - 迭代 OrderedDict 的最pythonic方法是什么

我有一个OrderedDict,我想在一个循环中获取索引、键和值。这肯定可以通过多种方式完成,即a=collections.OrderedDict({…})fori,b,cinzip(range(len(a)),a.iterkeys(),a.itervalues()):…但我想避免range(len(a))并将a.iterkeys()、a.itervalues()缩短为a.iteritems()之类的东西。使用enumerate和iteritems可以改写为fori,dinenumerate(a.iteritems()):b,c=d但它需要在循环体内解压。有没有办法在for语句中解包,

python - 计算点积的pythonic方法是什么?

我有两个列表,一个名为A,另一个名为B。A中的每个元素都是三元组,B中的每个元素都只是一个数字。我想计算定义为的结果:result=A[0][0]*B[0]+A[1][0]*B[1]+...+A[n-1][0]*B[n-1]我知道逻辑很简单但是如何用pythonic方式编写?谢谢! 最佳答案 Python3.5有一个显式运算符@用于点积,所以你可以写a=A@B而不是a=numpy.dot(A,B) 关于python-计算点积的pythonic方法是什么?,我们在StackOverflow

python - 生成对的pythonic方式

我想要类似下面的代码,但是“pythonic”风格或使用标准库:defcombinations(a,b):foriina:forjinb:yield(i,j) 最佳答案 这些并不是组合学意义上的真正“组合”,而是来自a和b的笛卡尔积的元素。标准库中生成这些对的函数是itertools.product():fori,jinitertools.product(a,b):#whatever 关于python-生成对的pythonic方式,我们在StackOverflow上找到一个类似的问题:

Pythonic 方式迭代序列,一次 4 个项目

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Whatisthemost“pythonic”waytoiterateoveralistinchunks?我正在读取一些PNG数据,每个像素有4个channel。我想一次迭代1个像素的数据(意味着每4个元素=1个像素,rgba)。red_channel=0whilered_channel这种方式看起来并不“正确”。有没有更Pythonic的方式来迭代一个序列,一次4个项目,然后将这4个项目解包? 最佳答案 (Python的itertools应该真正将all

python - 在字典列表上进行以下转换的 Pythonic 方式是什么?

我有一个这样的字典列表:l=[{'name':'foo','values':[1,2,3,4]},{'name':'bar','values':[5,6,7,8]}]我想获得这种形式的输出:>>>[('foo','bar'),([1,2,3,4],[5,6,7,8])]但缺少for-looping和appending我没有看到解决方案。有没有比这样做更聪明的方法?names=[]values=[]fordinl:names.append(d['name'])values.append(d['values']) 最佳答案 使用生成器表