小编Max*_*axB的帖子

在熊猫数据框上执行复杂搜索的最快方法

我试图找出对熊猫数据框执行搜索和排序的最快方法。以下是我要完成的数据帧之前和之后的数据帧。

之前:

flightTo  flightFrom  toNum  fromNum  toCode  fromCode
   ABC       DEF       123     456     8000    8000
   DEF       XYZ       456     893     9999    9999
   AAA       BBB       473     917     5555    5555
   BBB       CCC       917     341     5555    5555
Run Code Online (Sandbox Code Playgroud)

搜索/排序后:

flightTo  flightFrom  toNum  fromNum  toCode  fromCode
   ABC       XYZ       123     893     8000    9999
   AAA       CCC       473     341     5555    5555
Run Code Online (Sandbox Code Playgroud)

在此示例中,我实质上是在尝试过滤掉最终目的地之间存在的“航班”。应该使用某种类型的dropplicate方法完成此操作,但让我感到困惑的是如何处理所有列。二进制搜索将是实现此目标的最佳方法吗?提示表示赞赏,并努力解决此问题。

可能的边缘情况:

如果数据被交换并且我们的终端连接在同一列怎么办?

flight1  flight2      1Num    2Num     1Code   2Code
   ABC       DEF       123     456     8000    8000
   XYZ       DEF       893     456     9999    9999
Run Code Online (Sandbox Code Playgroud)

搜索/排序后:

flight1  flight2      1Num    2Num     1Code   2Code
   ABC …
Run Code Online (Sandbox Code Playgroud)

python binary-search-tree pandas

15
推荐指数
2
解决办法
629
查看次数

合并特定列上的重复行

如果一列中有重复项,我正在尝试合并数据帧的行。数据框如下所示。

Name   Code   X   Y
 A     123   10   11
 B     456   12   13
 C     123   15   16
Run Code Online (Sandbox Code Playgroud)

我想结合代码。因此,如果代码相同,则合并其他用逗号分隔的数据。产生的df如下所示:

Name   Code    X       Y
A,C    123   10,15   11,16
 B     456    12       13
Run Code Online (Sandbox Code Playgroud)

我的方法如下:

    df = df.groupby(['Name','Code','Y'])['X'].astype(str).apply(', '.join).reset_index() 

    df = df.groupby(['Name','Code','X'])['Y'].astype(str).apply(', '.join).reset_index() 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"Cannot access callable attribute 'astype' of 'SeriesGroupBy' objects, try using the 'apply' method"
Run Code Online (Sandbox Code Playgroud)

我一直无法弄清楚如何使用str类型的强制转换,有什么提示吗?

python pandas

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

输出到excel文件而不覆盖工作表

我有一个正在运行的 python 脚本,它当前执行三个独立的操作,并将每个结果输出到不同的 excel 文件。是否可以将我的所有输出都放在不同工作表上的一个 Excel 文件中?似乎最新的结果总是覆盖整个excel文件。

下面是我的想法:

 df_finit1.to_excel('OutFile.xlsx', sheet_name = 'Sheet1') 
 df_finit2.to_excel('OutFile.xlsx', sheet_name = 'Sheet2') 
 df_finit3.to_excel('OutFile.xlsx', sheet_name = 'Sheet3') 
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 xlsx writer 创建一个包含 3 个不同工作表的文件,并输出到这些工作表,但我得到了相同的结果。有小费吗?

python pandas openpyxl xlsxwriter

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

Check workbook for sheet and add if missing

I am trying to simply check if a sheet exists in an .xlsx file and if not I want to add it.

book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx', engine = 'openpyxl')
writer.book = book

if 'testSheet' in book.sheetnames:
    pass
else:
    book.add_sheet(book['testSheet'])
Run Code Online (Sandbox Code Playgroud)

Any ideas as to why this doesn't work?

python pandas openpyxl

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

正则表达式引号之间的所有内容,包括换行符

我在尝试执行捕获两个引号之间的所有内容的正则表达式时偶然发现了一个问题""。我注意到有时这些引号之间会出现换行符,从而破坏正则表达式。

我正在使用的当前正则表达式: \"((?:(?![(]).)*)\"

这可以很好地捕获引号之间的所有内容,除非发生换行。

任何正则表达式专家都知道如何允许换行,这种模式让我难住了。

python regex

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

将Pandas数据框拆分为子数据框(而不是数据框列表)

我正在尝试将一个数据框拆分为尽可能多的不同数据框,并根据要拆分的信息设置新数据框的名称。

例如:

将此数据框称为“ df”

Name    ID    Number    Code    Name2
123     cp1    500      ABC      456
123     cp1    501      DEF      456
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据“数字”将此数据框拆分为多个块,然后相应地重命名这些新数据框。

结果将如下所示:

df500:
Name    ID    Number    Code    Name2
123     cp1    500      ABC      456

df501:
Name    ID    Number    Code    Name2
123     cp1    501      DEF      456
Run Code Online (Sandbox Code Playgroud)

熊猫允许这样做吗?

python pandas

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

将带有nan列的每一行弹出到不同的数据框

我有一个数据框,其中某个列通常包含“ nan”。我想将发生这种情况的每一行都弹出并弹出到另一个df,这可能吗?

例如:

index    Make    Color
  1      Ford     Red
  2      Ford     nan
  3      Chevy    Blue
Run Code Online (Sandbox Code Playgroud)

两个结果df看起来像这样:

index    Make    Color
  1      Ford     Red
  2      Chevy    Blue

index    Make    Color
  1      Ford     nan
Run Code Online (Sandbox Code Playgroud)

python pandas

0
推荐指数
1
解决办法
59
查看次数

从布尔表达式创建列表

我有一个包含一列布尔表达式的数据框,我想创建另一列,它只是每个表达式的元素列表。

前任

Name          Exp
 A     DDDD | LLLL & AAAA
 D     HHHH | DDDD | JJJJ
 O     UUUU & FFFF & RRRR
Run Code Online (Sandbox Code Playgroud)

结果 df:

Name          Exp                   Exp List
 A     DDDD | LLLL & AAAA    ['DDDD','LLLL','AAAA']
 D     HHHH | DDDD | JJJJ    ['HHHH','DDDD','JJJJ']
 O     UUUU & FFFF & RRRR    ['UUUU','FFFF','RRRR']
Run Code Online (Sandbox Code Playgroud)

python pandas

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

根据密钥长度删除字典条目

字典是否允许基于密钥长度进行过滤?根据值有条件地更改字典似乎很简单,但是对键进行相同的操作呢?也就是说,删除所有显式长度不是4个字符的字典键会如何处理?

python

-1
推荐指数
1
解决办法
60
查看次数