小编ACh*_*ion的帖子

读取多个csv文件并在pandas中添加文件名作为新列

我在一个文件夹中有几个csv文件,我想在一个数据框中打开它们并插入一个带有相关文件名的新列.到目前为止,我编写了以下代码:

import pandas as pd
import glob, os
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('path/*.csv'))))
df['filename']= os.path.basename(csv)
df
Run Code Online (Sandbox Code Playgroud)

这给了我想要的数据帧但是在新列'filename'中它只列出了每行的文件夹中的最后一个文件名.我正在寻找每一行用它的相关csv文件填充.不只是文件夹中的最后一个文件.

对这位新手的任何帮助都非常感谢.

python csv operating-system glob pandas

8
推荐指数
2
解决办法
7077
查看次数

获取值大于python中某个整数的字典键的计数

我有一本字典。键是单词,值是这些单词出现的次数。

countDict = {'house': 2, 'who': 41, 'joey': 409, 'boy': 2, 'girl':2}
Run Code Online (Sandbox Code Playgroud)

我想找出有多少元素出现的值大于 1、值大于 20 和值大于 50。

我找到了这个代码

a = sum(1 for i in countDict if countDict.values() >= 2)
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误,我猜这意味着字典中的值不能作为整数处理。

builtin.TypeError: unorderable types: dict_values() >= int()
Run Code Online (Sandbox Code Playgroud)

我尝试修改上面的代码使字典值为整数,但这也不起作用。

a = sum(1 for i in countDict if int(countDict.values()) >= 2)

builtins.TypeError: int() argument must be a string or a number, not 'dict_values'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

python dictionary integer

7
推荐指数
2
解决办法
1万
查看次数

按字典中的值过滤项目

我有一个像这样的字典设置:

deck = [{
         'name': 'drew',
         'lvl': 23,
         'items': ['sword', 'axe', 'mana_potion']},
        {
         'name': 'john',
         'lvl': 23,
         'items': ['sword', 'mace', 'health_potion']}]
Run Code Online (Sandbox Code Playgroud)

这是一个基本示例,我需要一种方法来过滤(仅复制 {characters})匹配某些值,例如我只想要 23 级或携带剑的角色。

我正在考虑做这样的事情:

filtered = filter_deck(deck, 'mace')

def filter_deck(self, deck, filt):
        return [{k:v for (k,v) in deck.items() if filt in k}]
Run Code Online (Sandbox Code Playgroud)

并返回:

filtered = [{
             'name': 'john',
             'lvl': 23,
             'items': ['sword', 'mace', 'health_potion']}]
Run Code Online (Sandbox Code Playgroud)

当我不知道它是单个值还是值列表或如何过滤多个值时,我不确定如何过滤 k:v 或 k:[v1,v2,v3] 等特定项目。

我不确定如何使用多个键过滤字符。假设我想筛选出 23 级的角色,或者有 items['sword'] 或 items['mace'] 的角色。我怎样才能让它排序filter_cards(deck, ['lvl'=23, 'items'=['sword','mace'])

因此,如果任何角色达到 23 级,或者携带狼牙棒或剑,他们就会出现在该列表中。

python filtering python-3.x

5
推荐指数
1
解决办法
6485
查看次数

如何通过从 .txt 文件中读取,为每个键创建具有多个“列表”的 Python 字典?

我有一个大文本文件,看起来像:

1   27  21  22
1   151 24  26
1   48  24  31
2   14  6   8
2   98  13  16
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想用它创建一个字典。每个列表的第一个数字应该是字典中的键,并且应该采用以下格式:

{1: [(27,21,22),(151,24,26),(48,24,31)],
 2: [(14,6,8),(98,13,16)]}
Run Code Online (Sandbox Code Playgroud)

我有以下代码(总分是文本文件第一列中的最大数字(即字典中的最大键)):

from collections import defaultdict

info = defaultdict(list)
filetxt = 'file.txt'
i = 1

with open(filetxt, 'r') as file:
    for i in range(1, num_cities + 1):
        info[i] = 0
    for line in file:
        splitLine = line.split()
        if info[int(splitLine[0])] == 0:
            info[int(splitLine[0])] = ([",".join(splitLine[1:])])
        else:
            info[int(splitLine[0])].append((",".join(splitLine[1:])))
Run Code Online (Sandbox Code Playgroud)

哪个输出

{1: ['27,21,22','151,24,26','48,24,31'],
 2: ['14,6,8','98,13,16']}
Run Code Online (Sandbox Code Playgroud)

我想做这本字典的原因是因为我想对给定键的字典的每个“内部列表”运行 …

python dictionary

4
推荐指数
1
解决办法
1659
查看次数

为什么`zip`似乎消耗了`groupby`迭代?

因此,使用分割列表itertools.groupby()相当容易.

>>> import itertools as it
>>> iterable = it.groupby([1, 2, 3, 4, 5, 2, 3, 4, 2], lambda p: p==2)
>>> for x, y in iterable:
...     print(x, list(y))
...     next(iterable)
False [1]
False [3, 4, 5]
False [3, 4]
Run Code Online (Sandbox Code Playgroud)

按预期工作.但是使用常见的python习惯用法zip多次迭代迭代器,一次只能逐步完成2,这似乎打破了局面.

>>> iterable = it.groupby([1, 2, 3, 4, 5, 2, 3, 4, 2], lambda p: p==2)
>>> for (x, y), _ in zip(iterable, iterable):
...     print(x, list(y))
False []
False []
False []
Run Code Online (Sandbox Code Playgroud)

添加一个print(y) …

python python-itertools python-3.x

4
推荐指数
1
解决办法
189
查看次数

尝试导入Firebase程序包时收到.async错误


我正在尝试编写一个需要连接到Firebase的python脚本。我已经安装了python-firebase软件包,但是当我使用“ import firebase”将其导入程序时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\hajel\AppData\Local\Programs\Python\Python37-32\Scripts\RFIDHandler.py", line 1, in <module>
    import firebase
  File "C:\Users\hajel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\firebase\__init__.py", line 3
    from .async import process_pool
              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python syntax-error firebase

4
推荐指数
3
解决办法
3763
查看次数

Python-位置参数紧跟关键字参数

我有一个接受可变长度参数的函数,如下所述。我正在通过kwargs字典。但是我不明白为什么我得到了错误。

class PanSearch(object):    
    otp_wait = 30

    def __init__(self, surname, dob, mobile_no, otp_host, **kwargs):
        kwargs.setdefault('browser', 'chromium')
        self.surname = surname
        self.dob = dob
        self.mobile_no = mobile_no
        self.otp_host = otp_host
        self.middle_name = kwargs.get('middle_name', None)
        self.first_name = kwargs.get('first_name', None)
        self.status = kwargs.get('status')
        self.gender = 'M' if kwargs.get('status') == 'P' else None

# instantiating the object
otp_host = 'abc.xyz.in'
input_kwargs = {'status': 'P', 'gender': 'M', 'browser': 'chromium'}
driver = PanSearch(surname='kulkarni', dob='13/10/1981', mobile_no='9769172006', otp_host, **input_kwargs)

File "pan_no.py", line 87
    driver = PanSearch(surname='kulkarni', dob='13/10/1981', mobile_no='9769172006', …
Run Code Online (Sandbox Code Playgroud)

python

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

Python Class() 没有参数错误。我正在使用自我

我一直在浏览 Stack 和整个互联网,但找不到我正在处理的问题。我是 Python 新手,正在学习类的工作方式。我已经编写了一个非常简单的类和函数来将它打印到控制台。


class Car():

    def __intit__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        long_name = str(self.year), + " " + self.make + " " + self.model
        return long_name.title()

my_new_car = Car('Chevy', 'sonic', 2015)

print(my_new_car.get_descriptive_name())
Run Code Online (Sandbox Code Playgroud)

但是当我运行编译器时,它返回错误 Car() 不带参数。我知道需要 self 参数,并且我已经将它们包含在我能想到的所有区域中。我已经做了很多实验,我没有尝试改变它。我希望有人可以向我解释这一点,或者可能知道相关主题?

在此先感谢您的帮助!

python compiler-errors class

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

Python for循环迭代'i'

我使用以下脚本:

tagRequest = requests.get("https://api.instagram.com/v1/tags/" + tag + "/media/recent?client_id=" + clientId)
tagData = json.loads(tagRequest.text)
tagId = tagData["data"][0]["user"]["id"]

for i in tagData["data"]:
    print tagData["data"][i]
Run Code Online (Sandbox Code Playgroud)

我的脚本应该迭代JSON对象tagData.(在"数据"中的所有内容.)但是,我收到以下错误:list indices must be integers, not dict.

python dictionary for-loop list

2
推荐指数
1
解决办法
97
查看次数

让Tor ControlPort工作

我安装了Tor作为我的Windows机器上的服务运行,我试图通过Stem包在python中发出请求.在我的torrc文件中,我将ControlPort指定为9051并设置了HashedControlPassword.当我运行netstat时,我看到Tor在localhost:9050上运行,但没有任何东西正在侦听端口9051.因此,当我尝试连接到python中的ControlPort时:

Controller.from_port(port=9051)
Run Code Online (Sandbox Code Playgroud)

结果是

[Errno 10061] No connection could be made because the target machine actively refused it
Run Code Online (Sandbox Code Playgroud)

我尝试重新启动服务,我甚至重新安装了Tor浏览器,但似乎没有什么能让ControlPort工作.

python tor stem

2
推荐指数
1
解决办法
3145
查看次数