无法使用熊猫从csv文件访问列表

时间:2020-06-15 17:41:41

标签: python pandas csv data-analysis

我的csv文件中包含以下内容,我正在尝试使用熊猫从csv中读取最后一列。在成功获取最后一列x2之后。我无法从输出访问列。相反,如果我尝试为x2列建立索引,则会得到行。但是我想要专栏。

CSV文件:

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

我也可以的第二种解决方案是,如果我能得到

<script  src="..\js\NoscrollFunction.js"></script>

以上两种解决方案中的任何一种都对我有好处。预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果调用df.head(),则会看到有6列数据,但最后2列(x1和x2)由python列表行组成,这些行已通过使用引号转换为字符串:

“ [336.85,346.85,-1.61]”

是第二行上x2列的值。

从您想要的输出中,我认为您想要的是获取x2列每一行的索引1上的值(如果该行是列表,而不是看起来像列表的字符串)。

我认为最好的办法是考虑重新格式化数据,但与此同时,这是适合您的变通方法:

df = pd.read_csv("tickerdb.csv", index_col=0)

def get_middle_value(series):
    middle = [row.split(', ')[1] for row in series]
    return middle


print(get_middle_value(df.x2))






答案 1 :(得分:0)

尝试一下:

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