我有以下格式的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/