【发布时间】:2016-12-28 22:20:46
【问题描述】:
注意:这个问题确实是 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 | ...
... | ... | ...
我正在做的是应用 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)
我进展缓慢,但它确实很复杂,如果您能与此类问题分享任何最佳实践或建议,我将不胜感激。
【问题讨论】:
-
@shivsn 是对的,这个问题是重复的。虽然这里提供的答案更好,更通用,但恐怕如果我将我的问题标记为重复,整个线程将被删除。
标签: python pandas split-apply-combine