<ul>
<li>大多数代码都是为了使示例数据保持正确的形状</李>
<li>假设单个ID为1个字符<code>df.ID_r==df["ID"].str.strip().str[:1]</code></li>
<li>逻辑就是这样</li>
</ul>
<pre><code>import io, json
df = (pd.read_csv(io.StringIO("""| | ID | Divide | Object | List |
| 0 | A, B | 2 | 20 | [0, 5] |
| 1 | C, D | 2 | 40 | [10, 15, 35] |
| 2 | E, F | 2 | 20 | [11, 15] |
| 3 | G | 1 | 10 | [1, 5] |
| 4 | H | 1 | 10 | |
| 5 | I, J | 2 | 20 | |"""), sep="|")
.pipe(lambda d: d.rename(columns={c:c.strip() for c in d.columns}))
.pipe(lambda d: d.drop(columns=[c for c in d.columns if "Unnamed" in c or c==""]))
.assign(List=lambda d: d["List"].apply(lambda l: json.loads(l) if "[" in l else []))
)
### end make sample data work... NB List is a list and empty if no list..
# explode ID column
df = df.join(df["ID"].apply(lambda id: [t.strip() for t in id.split(",")]).explode(), rsuffix="_r")
# real logic, take first two list items if first, else ...
df["List"] = np.where(df.ID_r==df["ID"].str.strip().str[:1], df["List"].apply(lambda l: l[:2]),df["List"].apply(lambda l: l[2:]))
df.reset_index(drop=True).drop(columns=["ID"]).rename(columns={"ID_r":"ID"})
</code></pre>
<h3>输出</h3>
<div class="s-table-container">
^{tb1}$
</div>