注意:这个问题确实是Split pandas dataframe string entry to separate rows的副本,但这里提供的答案更加通用和信息丰富,所以恕我直言,我选择不删除线程
我有一个具有以下格式的“数据集”:
id | value | ...
--------|-------|------
a | 156 | ...
b,c | 457 | ...
e,g,f,h | 346 | ...
... | ... | ...
我想通过复制每个 id 的所有值来标准化它:
id | value | ...
--------|-------|------
a | 156 | ...
b | 457 | ...
c | 457 | ...
e | 346 | ...
g | 346 | ...
f | 346 | ...
h | 346 | ...
... | ... | ...
我正在做的是应用 split-apply-combine 的pandas
使用原则,为每个组.groupby
创建一个tuple
(groupby value, pd.DataFrame())
我创建了一个列来分组,它只计算行中的 id:
df['count_ids'] = df['id'].str.split(',').apply(lambda x: len(x))
id | value | count_ids
--------|-------|------
a | 156 | 1
b,c | 457 | 2
e,g,f,h | 346 | 4
... | ... | ...
我复制行的方式如下:
pd.DataFrame().append([group]*count_ids)
我进展缓慢,但它确实很复杂,如果您能与此类问题分享任何最佳实践或建议,我将不胜感激。