python - 数据帧交替数组
问题描述
我目前有一个包含以下信息的 excel 文件:
Company Initial Purchase Number
ABCD A123456789
ABCD B123456789
BCDE C123456789
BCDE D123456789
BCDE E123456789
CDEF F123456789
DEFG G123456789
DEFG H123456789
DEFG I123456789
DEFG J123456789
DEFG K123456789
我想把它变成一个表格,这样同一个公司的首字母就不会连续重复。
Company Initial Purchase Number
DEFG K123456789
ABCD A123456789
DEFG G123456789
ABCD B123456789
DEFG J123456789
BCDE C123456789
DEFG I123456789
BCDE D123456789
DEFG H123456789
BCDE E123456789
CDEF F123456789
我目前正在 Pandas 和 VBA 中尝试这个,但似乎无法围绕一个可行的解决方案。我也对其他 Python 库持开放态度。
谢谢。
解决方案
借助内存中的 ListBoxes 的另一种可能性:
Sub Reshuffle()
Dim Arr As Variant, FreqArr As Variant, Place As Long, Comp1 As Variant, Comp2 As Variant
Dim rngArr As Range, i As Long, j As Long, k As Long, ListB1 As MSForms.ListBox, ListB2 As MSForms.ListBox
Set ListB1 = CreateObject("New:{8BD21D20-EC42-11CE-9E0D-00AA006002F3}")
Set ListB2 = CreateObject("New:{8BD21D20-EC42-11CE-9E0D-00AA006002F3}")
Set rngArr = Range("A2:B12")
With ListB1
.Column = Application.Transpose(rngArr)
ListB2.List = .List
For i = LBound(.List) To UBound(.List)
Arr = Application.Match(Application.Transpose(Application.Index(.List, 0, 1)), Application.Index(.List, 0, 1), 0)
FreqArr = Application.Frequency(Arr, Arr)
If Application.Max(FreqArr) > (UBound(.List) + 2) / 2 Then MsgBox "not possible"
For j = 1 To UBound(.List) + 1
Place = Application.Match(Application.Large(FreqArr, j), FreqArr, 0)
Comp2 = .List(Place - 1, 0)
If Comp2 <> Comp1 Then Exit For
Next j
Comp1 = Comp2
With ListB2
For k = LBound(.List, 2) To UBound(.List, 2)
.List(i, k) = ListB1.List(Place - 1, k)
Next k
ListB1.RemoveItem Place - 1
End With
Next i
End With
rngArr.Value = ListB2.List 'replaces in same range
Set ListB1 = Nothing
Set ListB2 = Nothing
End Sub
推荐阅读
- python - 直方图的全局和局部最大值
- jetty - 为在反向代理后面运行的 ActiveMQ Web 控制台配置基本 URL
- php - 如何循环遍历这个 POST 数组?
- python - 如何在python中使用颜色图?
- webdrivermanager-java - 找不到 Microsoft Edge 二进制文件
- math - Rotation 和 getComponentRotation 有什么区别?
- java - 我正在尝试匹配日文字符的 Unicode 范围,但它会引发 PatternSyntaxException
- excel - 如何规范Excel中的文本功能?
- sql-server - SQL Server 2016 选择带有普通表的 json 对象数组中的位置
- excel - 如何将函数中的变量列名用于其他函数?