python - 将字典列表转换为单独的列 pandas
问题描述
我想要一个包含 1 列字典列表的 df
示例 df:
testData
{1: MLB, 2: NBA, 3: NFL}
进入以下:
Number Sport
1 MLB
2 NBA
3 NFL
我尝试了以下方法:
pd.DataFrame(df['testData'].values.tolist())
但这会返回
MLB NBA NFL
1 2 3
我想我已经很接近了,但只需要一些关于如何正确转换我的数据框的帮助。
解决方案
您可以将 apply 与 pd.Series 构造函数一起使用:
In [11]: df
Out[11]:
testData
0 {1: 'MLB', 2: 'NBA', 3: 'NFL'}
In [12]: df["testData"].apply(pd.Series)
Out[12]:
1 2 3
0 MLB NBA NFL
In [13]: df["testData"].apply(lambda d: pd.Series(list(d), d.values()))
Out[13]:
MLB NBA NFL
0 1 2 3
要将这些纳入单个运动专栏,您可以stack
:
In [14]: df["testData"].apply(lambda d: pd.Series(list(d), d.values())).stack()
Out[14]:
0 MLB 1
NBA 2
NFL 3
dtype: int64
In [15]: res = df["testData"].apply(lambda d: pd.Series(list(d), d.values())).stack().reset_index(level=1)
In [16]: res.columns = ["sport", "number"]
In [17]: res
Out[17]:
sport number
0 MLB 1
0 NBA 2
0 NFL 3
推荐阅读
- c - 有没有更快的方法在c中完成这个?
- android-studio - 错误:不是封闭类,我无法修复它
- javascript - Google Sheets App Script If Else Function
- reactjs - React:访问在 src 文件夹内的 public 文件夹中找到的图像
- html - json中的字符串间距,将通过JS脚本代码显示在HTML页面中
- python - cs50扫雷算法,在迭代过程中设置改变大小
- image-processing - 提高 SSIM、PSNR 等过滤器的 ffmpeg 精度
- javascript - 如何使用 navigation.navigate -react native 在深度嵌套的导航器中设置特定屏幕
- javascript - 在具有本地存储的两个样式表之间切换
- python - 窃取命令 Discord.Py