Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python中基于两个字符串列值对数据帧进行切片?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何在Python中基于两个字符串列值对数据帧进行切片?

Python 3.x 如何在Python中基于两个字符串列值对数据帧进行切片?,python-3.x,pandas,Python 3.x,Pandas,我有一个从SharePoint列表导入的数据框。在数据框中,我有一个名为“标识符”(一个文本字段)的列,它根据任务的层次结构(x/x.x/x.x.x/-其中x是一个数字)来分隔任务 df如下所示: Task Name Assigned To % Complete ... Modified By Version Identifier 0 Equipment Intelligent Special

我有一个从SharePoint列表导入的数据框。在数据框中,我有一个名为“标识符”(一个文本字段)的列,它根据任务的层次结构(x/x.x/x.x.x/-其中x是一个数字)来分隔任务

df如下所示:

     Task Name Assigned To                         % Complete  ...   Modified By Version                 Identifier
0    Equipment Intelligent Special Network System                    0.00  ...  Dominic Leow     1.0          1
1              Core Switch, 24SFP+8GE, Combo+4SFP                    0.00  ...  Dominic Leow     1.0        1.1
2                                         Level 1                    0.00  ...  Dominic Leow     1.0      1.1.1
3                                         Hacking                    0.30  ...  Dominic Leow     2.0    1.1.1.1
4                                      PVC Piping                    0.20  ...  Dominic Leow     2.0    1.1.1.2
5                                        Trunking                    0.45  ...  Dominic Leow     2.0    1.1.1.3
6                                         Cabling                    0.90  ...  Dominic Leow     2.0    1.1.1.4
7                                         Testing                    0.25  ...  Dominic Leow     2.0    1.1.1.5
8                                     Termination                    0.10  ...  Dominic Leow     2.0    1.1.1.6
9                                         Level 2                    0.00  ...  Dominic Leow     1.0      1.1.2
10                                        Hacking                    0.00  ...  Dominic Leow     1.0    1.1.2.1
11                                     PVC Piping                    0.00  ...  Dominic Leow     1.0    1.1.2.2
12                                       Trunking                    0.00  ...  Dominic Leow     1.0    1.1.2.3
13                                        Cabling                    0.00  ...  Dominic Leow     1.0    1.1.2.4
14                                        Testing                    0.00  ...  Dominic Leow     1.0    1.1.2.5
15                                    Termination                    0.00  ...  Dominic Leow     1.0    1.1.2.6
16                                        Level 3                    0.00  ...  Dominic Leow     1.0      1.1.3
我想在两个标识符列值之间切片所有行,格式为(x.x.x)。例如,我想要1.1.1到1.1.2之间的所有行,以及1.1.2到1.1.3之间的所有行,以此类推。目标是将两组标识符之间的行分组,格式为(x.x.x)&将这个切片数据帧保存到一个变量中,以便稍后调用它并在迭代整个过程时对其进行一些计算

我试过下面的代码,但似乎不起作用 更新1(2020年1月28日)-根据回复,我已将“标识符”列作为索引,并对df进行切片,但仅当我提供实际索引值时。整个数据集有1000列,'标识符'只遵循下面更新的(x.x.x-其中x是数字)代码模式

from shareplum import Site
from shareplum import Office365
import pandas as pd
import re
import numpy as np
pd.set_option('display.max_rows', None)

authcookie = Office365('https://speedmax.sharepoint.com', username='username', password='password').GetCookies()
site = Site('https://speedmax.sharepoint.com/sites/jdtstadium', authcookie=authcookie)
sp_list = site.List('joblist')
data = sp_list.GetListItems('All Tasks', rowlimit=5000)
df = pd.DataFrame(data)

stringMatch_mainTask = re.compile(r'^\d$')
stringMatch_bqItem = re.compile(r'^\d'+'.'+'\d$')
stringMatch_level = re.compile(r'^\d'+'.'+'\d'+'.'+'\d$')
stringMatch_job = re.compile(r'^\d'+'.'+'\d'+'.'+'\d'+'.'+'\d$')

mainTaskdf = df[df['Identifier'].str.contains(stringMatch_mainTask)]
bqItemdf = df[df['Identifier'].str.contains(stringMatch_bqItem)]
leveldf = df[df['Identifier'].str.contains(stringMatch_level)]
jobdf = df[df['Identifier'].str.contains(stringMatch_job)]

df = df.set_index("Identifier")
dfSlice = df["1.1.1":"1.1.2"]
print(solution)

请让我知道如何找到可行的解决方案?这些数据将为我们的定制报告提供支持,因此我迫切需要一个解决方案。

您是否尝试过将索引设置为identifier并从那里进行切片

很抱歉问这样一个问题,但我该怎么做呢?我对python真的很陌生(一周前开始学习),现在我已经被困在这里整整两天了。我现在不能尝试,但是做一个df.set_索引(“Identifier”),然后通过索引df[“1.1.1”:“1.1.2”],看看这是否有效,然后按“1.0”、“2.0”重新切片等等,或者尝试多重索引。因此,我将“Identifier”列作为索引,当我运行上述代码时,它确实会对其进行切片,但它仅对我提供的特定索引值进行切片。我希望pandas根据我在两个相似标识符字段之间提供的模式进行切片。对不起,伪代码:)pandas中的切片可以通过多种方式完成,这只是一个想法,我相信还有其他更简单的方法。因此,在按索引进行切片之后,再按所需的最后一个标识符进行切片。。df[“1.1”:“1.2”][df[“Identifier2”]=“1.0”]