我正在尝试将两个单元格合并在一起。原因是"机箱"下的每个单元都应该是字母数字(ABCD123456(,但提供的PO偶尔会将最后一个数字转移到下一行(所述行上没有其他数据(,使数据看起来像这样。例如,我最初试图创建一个查看单元格的语句,确认它不是一个数字,然后查看下一个单元格,并将两者合并。从来没有得到过任何结果。然后我决定复制数据帧,移动第二个数据帧(因此丢失的数字在同一行(,并将它们合并在一起。这就是我现在的处境。错误消息这是我在Python中的第一段真正的代码,所以我很确定我在做低效的事情,所以无论如何都要让我知道我可以改进的地方。
目前我有这个。。。
Col1 | 机箱 | 其他列其他列2… | |
---|---|---|---|
楠 | ABCD1234 | ABC>123 | //tr>|
楠 | 6 | 楠||
Nan | WXYZ987654 | GHI | >td>456|
楠 | QRSTU654987 | 楠789 | |
Nan | MNOP999999 | XYZ | Nan
为Chassis
列创建一个虚拟组并合并该组的行:
# Convert 'NaN' string to pd.NA
df = df.replace('Nan', pd.NA)
cols = df.columns.difference(['Chassis'])
m = df[cols].any(1)
df = df.assign(Chassis=df.groupby(m.cumsum())['Chassis']
.transform('sum')).loc[m].reset_index(drop=True)
print(df)
# Output
Col1 Chassis Other Columns Other Columns 2
0 <NA> ABCD123456 ABC 123
1 <NA> WXYZ987654 GHI 456
2 <NA> QRSTU654987 <NA> 789
3 <NA> MNOP999999 XYZ <NA>
设置:
import pandas as pd
import numpy as np
data = {'Col1': ['Nan', 'Nan', 'Nan', 'Nan', 'Nan'],
'Chassis': ['ABCD12345', '6', 'WXYZ987654', 'QRSTU654987', 'MNOP999999'],
'Other Columns': ['ABC', 'Nan', 'GHI', 'Nan', 'XYZ'],
'Other Columns 2': ['123', 'Nan', '456', '789', 'Nan']}
df = pd.DataFrame(data)
print(df)
# Output
Col1 Chassis Other Columns Other Columns 2
0 Nan ABCD12345 ABC 123
1 Nan 6 Nan Nan
2 Nan WXYZ987654 GHI 456
3 Nan QRSTU654987 Nan 789
4 Nan MNOP999999 XYZ Nan