python - Python Pandas:从单元格中提取数据并将其转换为列
问题描述
我有一个有点混乱的数据集,这种模式:
ID Value
abc (john:10),(albert:5),(hanna:7) ...
def (frank:5),(dave:8),(ben:11) ...
我当然希望有这种格式的数据:
ID Value1 Value2
abc john 10
abc albert 5
abc hanna 7
def frank 5
def dave 8
def ben 11
但是,我对如何做到这一点有些困惑?我能想出的唯一解决方案是循环并将非常新的数据点添加到新的数据帧中。
是否有更好、更有效的方法?
谢谢你!
解决方案
您可以使用explode
和str.extract
:
df = df.assign(Value = df.Value.str.split(',')).explode('Value')
df[['Value_1', 'Value_2']] = df.Value.str.extract(pat=r'\((\w+):(\d+)\)')
df = df.drop('Value', axis =1)
输出:
ID Value_1 Value_2
0 abc john 10
0 abc albert 5
0 abc hanna 7
1 def frank 5
1 def dave 8
1 def ben 11
推荐阅读
- matlab - 将 hh:mm 时间转换为十进制时间(Matlab)
- java - 为什么这个对象在方法调用期间会发生变异?
- javascript - 基于相同的嵌套键合并嵌套的 JavaScript 对象
- python - 如何制作编码语言?
- mysql - PHP 8、MySQL 7.4 和 mysql_native_password
- java - 使用 BufferedReader/BufferedWriter 删除文件的第 N 行
- javascript - 当创建一个元素,添加后的onchange不是它的一部分
- wso2 - Change token type of DefaultApplication WSO2 APIM 3.1.0
- python - unable to import Postgres Fixture from class
- google-bigquery - 表行中的 BigqueryIO 架构