小编dya*_*yao的帖子

在openpyxl中查看行值

在python的csv模块中,有一个函数被调用csv.reader,它允许你遍历一行,返回一个reader对象,并且可以保存在像列表这样的容器中.

因此,当列表分配给变量并打印时,即:

csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|'))
print (csv_rows)
>
>
>
[['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'] # I gave an example of the function outputting a header row
Run Code Online (Sandbox Code Playgroud)

到目前为止,我没有在openpyxl中看到类似的功能.我可能会弄错,所以我想知道你们中是否有人可以帮助我.

更新

@alecxe,您的解决方案完美无缺(除了将我的出生日期作为日期时间格式而不是常规字符串).

def iter_rows(ws):
for row in ws.iter_rows():
    yield [cell.value for cell in row]
>
>
>>> pprint(list(iter_rows(ws)))
[['First Nam', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'], ['John', 'Smith', 'Snake', datetime.datetime(1989, 9, 4, 0, 0), 'M']]
Run Code Online (Sandbox Code Playgroud)

由于我是初学者,我想知道如果我使用for循环而不是列表理解,这将如何工作.

所以我用过这个:

def iter_rows(ws):
result=[]
for row in …
Run Code Online (Sandbox Code Playgroud)

python csv excel openpyxl

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

如何打印此类变量?

如果我尝试打印作为列表的类变量,我会得到一个Python对象.(这些是我在stackoverflow上找到的例子).

 class Contacts:
    all_contacts = []

    def __init__(self, name, email):
       self.name = name
       self.email = email
       Contacts.all_contacts.append(self)

    def __str__(self):
       return '%s, <%s>' % (self.name, self.email)

c1 = Contacts("Grace", "something@hotmail.com")
print(c1.all_contacts)

[<__main__.Contact object at 0x0287E430>, <__main__.Contact object`
Run Code Online (Sandbox Code Playgroud)

但在这个更简单的例子中,它实际上打印:

class Example():
    samplelist= [1,2,3]

test= Example()
print (test.samplelist)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我认为这一行是罪魁祸首:Contact.all_contacts.append(self)在第一个示例代码中.但我不确定这里发生了什么.

编辑:

一些用户告诉我只是附加self.name而不是仅仅self.

所以当我这样做时:

class Contacts:
   all_contacts = []

   def __init__(self, name, email):
      self.name = name
      self.email = email
      Contacts.all_contacts.append(self.name)
      Contacts.all_contacts.append(self.email)

   def __str__(self):
      return '%s, <%s>' …
Run Code Online (Sandbox Code Playgroud)

python class

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

熊猫pct从初始值变化

我想Dew_P Temp (C)从初始值-3.9 找到pct_change .我想在新专栏中使用p​​ct_change.

来源:

weather = pd.read_csv('https://raw.githubusercontent.com/jvns/pandas-cookbook/master/data/weather_2012.csv')
weather[weather.columns[:4]].head()


Date/Time        Temp (C)   Dew_P Temp (C)  Rel Hum (%)
0   2012-01-01   -1.8       -3.9             86
1   2012-01-01   -1.8       -3.7             87
2   2012-01-01   -1.8       -3.4             89
3   2012-01-01   -1.5       -3.2             88
4   2012-01-01   -1.5       -3.3             88
Run Code Online (Sandbox Code Playgroud)

我已尝试过for循环的变体(甚至可以添加此处显示的索引),但无济于事:

for index, dew_point in weather['Dew_P Temp (C)'].iteritems():
    new = weather['Dew_P Temp (C)'][index]
    old = weather['Dew_P Temp (C)'][0]
    pct_diff = (new-old)/old*100
    weather['pct_diff'] = pct_diff
Run Code Online (Sandbox Code Playgroud)

我认为问题是weather['pct_diff'],它不需要new它采用数据帧的最后一个值并从中减去它old

所以它总是(2.1-3.9)/3.9*100因此我的百分比变化总是-46%.

我想要的最终结果是:

Date/Time        Temp …
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x pandas

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

使用 Python 密码保护 Excel 文件

我还没有找到很多关于使用 Python 创建受密码保护的 Excel 文件的主题。

在 Openpyxl 中,我确实找到了一个SheetProtection使用以下模块的模块:

from openpyxl.worksheet import SheetProtection

但是,问题是我不确定如何使用它。这不是Workbookor的属性, Worksheet所以我不能这样做:

wb = Workbook()
ws = wb.worksheets[0]
ws_encrypted = ws.SheetProtection()
ws_encrypted.password = 'test'
...
Run Code Online (Sandbox Code Playgroud)

有谁知道这样的请求是否可以用 Python 实现?谢谢!

python openpyxl

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

比较2个词典:相同的键,不匹配的值

我目前正在尝试比较2个数据集:

dict1 = {'a':1, 'b':2, 'c':3}
dict2 = {'a':1, 'b':2, 'c':4}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望输出类似于:

set1 = set([('c', 4), ('c',3)])
Run Code Online (Sandbox Code Playgroud)

因为他们的键匹配但值不匹配.

我尝试使用交集和差异运算符进行了一系列的理解,但是我无法获得所需的输出.

任何帮助表示赞赏.

python

4
推荐指数
2
解决办法
814
查看次数

找到上个月

我已经看到一些使用dateutil模块执行此操作的方法,但有没有办法在不使用内置库的情况下执行此操作?

例如,现在的当月是7月.我可以使用该datetime.now()功能完成此操作.

python返回上个月最简单的方法是什么?

python

3
推荐指数
1
解决办法
3194
查看次数

使用For循环查找列表中的第N个元素

所以我想在另一个列表中找到第2,第3和第4个元素.

position = [2,3,4]

Sample_List = ['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)

循环将返回结果:

['c','d','e']
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

python ×7

openpyxl ×2

class ×1

csv ×1

dataframe ×1

excel ×1

pandas ×1

python-3.x ×1