如何将dict[tuple[str, str], list[float]]转换为Pandas DataFrame
将二元组键的字典转换为Pandas DataFrame
你手里这种键是二元组、值为浮点列表的字典,完全不需要用split函数处理,直接用Pandas的内置方法就能快速转成目标DataFrame,下面给两种实用方法:
方法一:直接解构键值对构造
直接遍历字典的键值对,把二元组拆成两列,列表里的数值拆成对应列,一步到位:
import pandas as pd # 你的示例数据 raw_data = {('A','B'): [-0.008035100996494293, 0.008541940711438656]} # 解构键和值,生成DataFrame df = pd.DataFrame( [(key1, key2, val1, val2) for (key1, key2), [val1, val2] in raw_data.items()], columns=['列1', '列2', '数值1', '数值2'] # 可自定义列名 )
执行后得到的DataFrame样式:
| 列1 | 列2 | 数值1 | 数值2 |
|---|---|---|---|
| A | B | -0.008035100996494293 | 0.008541940711438656 |
方法二:先转Series再扩展列
如果字典值的列表长度固定但不确定数量,这种方法更灵活:
import pandas as pd raw_data = {('A','B'): [-0.008035100996494293, 0.008541940711438656]} # 先转成Series,重置索引拿到键的两列 s = pd.Series(raw_data) df = s.reset_index() df.columns = ['列1', '列2', '数值列表'] # 把数值列表拆分成单独列 df[['数值1', '数值2']] = pd.DataFrame(df['数值列表'].tolist()) # 删除临时的数值列表列 df = df.drop('数值列表', axis=1)
这种方法能自动适配所有长度一致的数值列表,无需手动写解构变量名。
补充说明
split函数是用来分割字符串的,你的数据里没有需要拆分的字符串,用它完全是绕远路,直接解构元组和列表才是最直接的处理方式。
内容的提问来源于stack exchange,提问作者SomePerson
相关产品推荐
相关产品推荐

