python - 将具有单个值列表的 pandas 列转换为行
问题描述
我有以下数据框:
symbol PSAR
0 AAPL [nan,100,200]
1 PYPL [nan,300,400]
2 SPY [nan,500,600]
我正在尝试将PSAR
列表值转换为如下行:
symbol PSAR
AAPL nan
AAPL 100
AAPL 200
PYPL nan
PYPL 300
... ...
SPY 600
我一直试图通过遵循这篇文章中的答案来解决它(一个关键的区别是该帖子有一个列表列表)但无法到达那里。 如何将具有值列表的列转换为 Pandas DataFrame 中的行。
df['PSAR'].stack().reset_index(level=1, drop=True).to_frame('PSAR')
.join(df[['symbol']], how='left')
解决方案
不是一个光滑的,但它可以完成这项工作:
list_of_lists = []
df_as_dict = dict(df.values)
for key,values in df_as_dict.items():
list_of_lists+=[[key,value] for value in values]
pd.DataFrame(list_of_lists)
返回:
0 1
0 AAPL NaN
1 AAPL 100.0
2 AAPL 200.0
3 PYPL NaN
4 PYPL 300.0
5 PYPL 400.0
6 SPY NaN
7 SPY 500.0
8 SPY 600.0
推荐阅读
- r - 如何使用书签在 Shiny 的 DT 表中记录编辑的内容?
- sql - 将按渠道返回每个完整周接触点同比增长的查询
- python - 张量形状与测试中的目标值不匹配
- editor - DBeaver SQL 编辑器:如何仅在当前窗口中搜索/替换?
- javascript - 为什么这返回错误?(简单代码)
- php - 两因素插件wordpress
- c++ - 如何控制 C++ DLL 调试符号加载?
- react-native - undefined 不是 React Native 中poseNet 的对象(评估'env().platform.fetch')
- python-3.x - 如何在一列中删除 str 和 int
- woocommerce - Woocommerce rest api 产品价格更新错误“无效或重复 sku”