python - 分解 DataFrame 中具有多个值的单元格

标签 python pandas dataframe

我有以下格式的pandas.DataFrame(...)(工作示例):

df = pd.DataFrame({'foo1':[1,2,3], 'foo2': ["a:1, b:2", "d:4", "a:6, d:5"]})
df
   foo1      foo2
0     1  a:1, b:2
1     2       d:4
2     3  a:6, d:5

我想将 foo2 单元格值分解为列(O/P df):

   foo1      foo2_a    foo2_b    foo2_d
0     1           1         2         0
1     2           0         0         4 
2     3           6         0         5

我可以通过索引迭代整个数据帧,存储每行的值 - 但它看起来并不优雅。

是否有一些pandas技巧/优雅/Pythonic解决这个问题? 谢谢!

最佳答案

如果你使用

df.foo2.str.split(', ').apply(lambda l: pd.Series({e.split(':')[0]: int(e.split(':')[1]) for e in l})).fillna(0)

你得到了

     a    b    d
0  1.0  2.0  0.0
1  0.0  0.0  4.0
2  6.0  0.0  5.0

请注意,一旦将每一行放入字典中,您就可以将其转换为 pandas Series,这将是结果。

从这一点来看,这只是重命名列和concat生成结果的问题。

关于python - 分解 DataFrame 中具有多个值的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283790/

相关文章:

python - 在 Google App Engine 中的 redirect() 函数中在页面之间传递数据

python - 将 Pandas 中各个字段的小数位数指定为csv

python - 根据行值返回列的平均值

python - 用数据框的行值替换子列表中的第二项

python - 将对象类型的数据框列转换为浮点型

python - 从数据框中删除未出现一定次数的用户名?

python - 将 python pandas 系列转换为数据框并将列分成两部分

python - 以 `---` 结尾和开头的 python 读取 YAML 文件

python - Pandas - 旋转、堆叠、取消堆叠?

python - Pandas 平均轴参数