python - 无法使用熊猫从 csv 文件访问列表
问题描述
我的 csv 文件中有以下内容,我正在尝试使用 pandas 从 csv 中读取最后一列。在成功获取最后一列 x2 之后。我无法从输出中访问该列。相反,如果我尝试索引 x2 列,我会得到行。但我想要专栏。
CSV 文件:
symbol,close,low,high,x0,x1,x2
ACC,-1.41,1241.5,1270.0,-1.41,"[1221241.5, 1270, -1.41]","[1241.5, 1270, -1.41]"
ADANIPORTS,-1.61,336.85,346.85,-1.61,"[336.85, 346.85, -1.61]","[336.85, 346.85, -1.61]"
ADANITRANS,3.45,202.8,211.2,3.45,"[202.8, 211.2, 3.45]","[202.8, 211.2, 3.45]"
代码
import pandas as pd
df = pd.read_csv("tickerdb.csv", index_col=0)
print((df.iloc[:, -1]))
输出
symbol
ACC [1241.5, 1270, -1.41]
ADANIPORTS [336.85, 346.85, -1.61]
ADANITRANS [202.8, 211.2, 3.45]
我尝试从列表中访问该列,但我得到的是行。
print((df.iloc[:, -1][1]))
新输出:
[336.85, 346.85, -1.61]
但预期的输出是列表中的一列,而不是行:
1270
346.85
211.2
我也很好的第二种解决方案是,如果我能以某种方式得到
#Current output from last column using df.iloc
ACC [1241.5, 1270, -1.41]
ADANIPORTS [336.85, 346.85, -1.61]
ADANITRANS [202.8, 211.2, 3.45]
#If I can get like below for x2 column is also fine for me.
symbol low high change
ACC 1241.5 1270 -1.41
ADANIPORTS 336.85 346.85 -1.61
ADANITRANS 202.8 211.2 3.45
以上两种解决方案中的任何一种都对我有好处。在此先感谢您的帮助。
解决方案
尝试这个:
from ast import literal_eval
df2 = pd.DataFrame(df.x2.apply(lambda x: literal_eval(x)).tolist(), columns=['low', 'high', 'change'])
df2.insert(0, column='symbol', value=df.symbol)
输出:
symbol low high change
0 ACC 1241.50 1270.00 -1.41
1 ADANIPORTS 336.85 346.85 -1.61
2 ADANITRANS 202.80 211.20 3.45
推荐阅读
- python - Tensorflow object detection api 按图片中物体的顺序打印预测
- coldfusion - CFSpreadsheet 没有格式化日期
- javascript - 代码镜像 html 不能在 chrome 中工作,但在其他浏览器中工作
- javascript - 带有图标的 jQuery 验证插件自定义错误消息
- git - 没有这样的文件或目录 ssh-add ~/id_rsa
- batch-file - 批量从多个txt中提取下载地址到一个新的txt文件
- python - 如何使用熊猫搜索字符串模式并打印列中的总值
- bluetooth - Zephyr BLE:一个 GATT 客户端可以连接到多个 GATT 服务器吗
- python - 从 Matplotlib/Seaborn 箱线图中识别的数据集中删除异常值
- ansible - Jinja2 模板的结果在 Ansible 中以字符串形式返回