小编ank*_*_91的帖子

Python pandas to_csv zip 格式

通过 to_csv 写入 zip 文件时,我遇到了一个特殊的问题。

使用 GZIP:

df.to_csv(path_or_buf = 'sample.csv.gz', compression="gzip", index = None, sep = ",", header=True, encoding='utf-8-sig')
Run Code Online (Sandbox Code Playgroud)

给出了一个名为 ' sample.csv.gz '的整洁的 gzip 文件,在里面我得到了我的 csv ' sample.csv '

但是,使用 ZIP 时情况会发生变化

df.to_csv(path_or_buf = 'sample.csv.zip', compression="zip", index = None, sep = ",", header=True, encoding='utf-8-sig')
Run Code Online (Sandbox Code Playgroud)

给出了一个名为“ sample.csv.zip ”的 zip 文件,但在其中,csv 也已重命名为“sample.csv.zip”。从文件中删除额外的“.zip”会返回 csv。

如何在没有此问题的情况下实现 zip 扩展?我需要有 zip 文件作为我无法绕过的要求。我在 Windows 10 机器上使用 python 2.7。

预先感谢您的帮助。

python python-2.7 pandas

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

合并在一列或另一列上

我想合并2个数据帧:

DF1:

                                              cik0        cik1        cik2  
'MKTG, INC.'                            0001019056        None        None   
1 800 FLOWERS COM INC                   0001104659  0001437749        None   
11 GOOD ENERGY INC                      0000930413        None        None   
1347 CAPITAL CORP                       0001144204        None        None   
1347 PROPERTY INSURANCE HOLDINGS, INC.  0001387131        None        None 
Run Code Online (Sandbox Code Playgroud)

DF2:

              cik Ticker
0      0001144204   AABB
1      0001019056      A
2      0001387131   AABC
3      0001437749     AA
4      0000930413  AAACU
Run Code Online (Sandbox Code Playgroud)

预期结果:

                                              cik0        cik1  cik2 ticker
'MKTG, INC.'                            0001019056        None  None      A
1 800 FLOWERS COM INC                   0001104659  0001437749  None     AA
11 GOOD ENERGY …
Run Code Online (Sandbox Code Playgroud)

python merge dataframe pandas

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

任务调度程序 - 仅在特定任务的事件上运行

我有一个 powershell 脚本,它会触发一封电子邮件,我已将其另存为EmailScript.PS1该脚本没有问题,它运行得很好)。我计划每当登录事件时安排此脚本,例如:

Event ID:111    Description:Task terminated
Run Code Online (Sandbox Code Playgroud)

每当触发所需事件时,我就能够成功地安排此脚本。

但是,目前它考虑了xyz任务计划程序中运行的所有任务(例如,不是我命名的目标任务)。

我想仅在特定任务(不是所有任务)触发事件时安排此基于事件的任务,但在任务计划程序创建任务选项卡中找不到这样的过滤器/下拉列表。

任何建议/帮助将不胜感激。

windows powershell taskscheduler

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

熊猫str.split不剥离分裂模式

示例代码:

In [1]: import pandas as pd

In [2]: serie = pd.Series(['this#is#a#test', 'another#test'])

In [3]: serie.str.split('#', expand=True)
Out[3]:
         0     1     2     3
0     this    is     a  test
1  another  test  None  None
Run Code Online (Sandbox Code Playgroud)

是否可以在不剥离分割条件字符串的情况下进行分割?上面的输出将是:

Out[3]:
         0     1     2     3
0     this   #is    #a #test
1  another #test  None  None
Run Code Online (Sandbox Code Playgroud)

编辑1:实际用例是保持匹配模式,例如:

serie.str.split(r'\n\*\*\* [A-Z]+', expand=True)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,[AZ] +是处理步骤,我想保留这些步骤以进行进一步处理。

python regex pandas

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

Python Pandas 切片与各种数据类型

我在具有两种数据类型的数据框中有一列,如下所示:

25                3037205
26    2019-09-04 19:54:57
27    2019-09-09 17:55:45
28    2019-09-16 21:40:36
29                3037206
30    2019-09-06 14:49:41
31    2019-09-11 17:17:11
32                3037207
33    2019-09-11 17:19:04
Run Code Online (Sandbox Code Playgroud)

我正在尝试对其进行切片并构建一个像这样的新数据框:

26    3037205    2019-09-04 19:54:57
27    3037205    2019-09-09 17:55:45
28    3037205    2019-09-16 21:40:36
29    3037206    2019-09-06 14:49:41
30    3037206    2019-09-11 17:17:11
31    3037207    2019-09-11 17:19:04
Run Code Online (Sandbox Code Playgroud)

我找不到如何在数字“无日期类型”之间进行切片。

一些想法?

谢谢!

python datetime slice dataframe pandas

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

根据当前时间戳获取会计年度-python

我正在尝试根据今天的日期获取财政年度的开始日期。

因此,经过一番研究后,我发现了这个软件包,名为“fiscalyear您可以在其中修改会计年度的开始日期”。就我而言,我想01-07-year成为我的财政年度的开始日期,所以我设置fiscalyear.START_MONTH = 7

我已经尝试过以下(如果您是可重现的示例pip install fiscalyear):

import datetime
import fiscalyear
fiscalyear.START_MONTH = 7
a = fiscalyear.FiscalYear(datetime.datetime.now().year).start.date()
a.strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

哪个输出正确:

'2018-07-01'
Run Code Online (Sandbox Code Playgroud)

然而,当月份变成八月时,这将不起作用,因为它datetime.datetime.now().year没有改变。所以我尝试做类似的事情:

if (datetime.datetime.now()-pd.to_datetime('2018-07-01')).days < 365:
    a = fiscalyear.FiscalYear(datetime.datetime.now().year).start.date()
    print(a.strftime('%Y-%m-%d'))
else:
    a = fiscalyear.FiscalYear(datetime.datetime.now().year+1).start.date()
    print(a.strftime('%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)

我对自己正在做的事情有一种不好的预感,因为这现在可能也适用于闰年。

在 python 中是否有更好的方法可以根据当前时间戳检测财政年度的开始日期?

py版本3.6.7

python datetime python-3.x pandas

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

根据条件对熊猫系列进行分组

我有一个 Pandas df,其中一列包含以下值。

      Data
0      A
1      A 
2      B
3      A
4      A 
5      A
6      B
7      A
8      A
9      B
Run Code Online (Sandbox Code Playgroud)

我想尝试对这些值进行分组,对于每次遇到值 B,我希望将组值更改如下

      Data  Group
0      A      1
1      A      1
2      B      1
3      A      2
4      A      2
5      A      2
6      B      2
7      A      3
8      A      3
9      B      3
Run Code Online (Sandbox Code Playgroud)

如何使用内置的熊猫来实现这一点。以某种方式创建任何辅助列以促进上述任务。

python grouping dataframe pandas

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

列熊猫数据帧的每一行中包含的列表中的总和值

我有一个 df,其中列中的每一行"numbers"都是一个浮点数列表。我想用这些浮点数的总和向 df 添加一列。

#current output
letter   numbers
a        [0.0, 0.1, 2.3]
b        [5, 6.7, 11.21] 

#desired output
letter   numbers           sum_result
a        [0.0, 0.1, 2.3]   2.4
b        [5, 6.7, 11.21]   22.91  
Run Code Online (Sandbox Code Playgroud)

我试过 sum(df.numbers) 并收到此错误消息

TypeError: unsupported operand type(s) for +: 'int' and 'list'
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

python list dataframe pandas

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

使用行索引的Pandas Split DataFrame

我想使用行索引按不均匀的行数拆分数据帧。

下面的代码:

groups = df.groupby((np.arange(len(df.index))/l[1]).astype(int))
Run Code Online (Sandbox Code Playgroud)

仅适用于统一的行数。

df

a b c  
1 1 1  
2 2 2  
3 3 3  
4 4 4  
5 5 5  
6 6 6  
7 7 7  

l = [2, 5, 7]

df1  
1 1 1  
2 2 2  

df2  
3,3,3  
4,4,4  
5,5,5  

df3  
6,6,6  
7,7,7  

df4  
8,8,8
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

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

在每行列上使用函数操作在 Pandas 数据框中创建新行的最有效的计算方法?

假设我有一个数据框,其中两列包含整数

A  B 
3  3
4  6
6  4
7  4
Run Code Online (Sandbox Code Playgroud)

我想创建一个从现有列创建新行的函数

def new_rows(row):
    for idx in range (row['A']):
        c = idx*row['B']
        row['C'] = c
        return row
Run Code Online (Sandbox Code Playgroud)

所以结果数据帧将是

A.  B.   C 
3.  3.   0
3.  3.   3
3.  3.   6
4.  6    0
4.  6    6
4.  6    12
4.  6    18
6  4.    0
...
...
...
Run Code Online (Sandbox Code Playgroud)

据我所知,pandas map 和 apply 可用于创建新列,但不能用于创建其他行

我能想到的最佳解决方案是使用 pandas iterrows 在迭代期间应用操作,将所有值保存到字典列表中,然后创建该列表的 pandas 数据框。

python pandas

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