我试图找出对熊猫数据框执行搜索和排序的最快方法。以下是我要完成的数据帧之前和之后的数据帧。
之前:
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) 如果一列中有重复项,我正在尝试合并数据帧的行。数据框如下所示。
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 脚本,它当前执行三个独立的操作,并将每个结果输出到不同的 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 个不同工作表的文件,并输出到这些工作表,但我得到了相同的结果。有小费吗?
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?
我在尝试执行捕获两个引号之间的所有内容的正则表达式时偶然发现了一个问题""。我注意到有时这些引号之间会出现换行符,从而破坏正则表达式。
我正在使用的当前正则表达式: \"((?:(?![(]).)*)\"
这可以很好地捕获引号之间的所有内容,除非发生换行。
任何正则表达式专家都知道如何允许换行,这种模式让我难住了。
我正在尝试将一个数据框拆分为尽可能多的不同数据框,并根据要拆分的信息设置新数据框的名称。
例如:
将此数据框称为“ 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)
熊猫允许这样做吗?
我有一个数据框,其中某个列通常包含“ 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) 我有一个包含一列布尔表达式的数据框,我想创建另一列,它只是每个表达式的元素列表。
前任
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) 字典是否允许基于密钥长度进行过滤?根据值有条件地更改字典似乎很简单,但是对键进行相同的操作呢?也就是说,删除所有显式长度不是4个字符的字典键会如何处理?