如何从表访问熊猫数据

时间:2020-07-02 08:05:55

标签: python pandas

我正在尝试使用熊猫读取数据。 output test

这是我尝试过的:

df = pd.read_csv("samples_data.csv")
in_x = df.for_x
in_y = df.for_y
in_init = df.Init

plt.plot(in_x[0], in_y[0], 'b-')

问题是in_x和in_y输出一个字符串:(0, '[5 3 9 4.8 2]') (1, '[6 3 9 4.8 2]') ...我该如何解决该问题?

感谢您抽出宝贵时间回答我的问题。

我期待的是:

in_x_1 = in_x[2][0]  # output: [
in_x_2 = in_x[2][1]  # output: 6

1 个答案:

答案 0 :(得分:1)

读入数据帧,并使用iloc方法切片:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame([
    [[5,3,9,4.8,2], [5,3,9,4.8,9], 33],
    [[6,3,9,4.8,2], [4,3.8,9,8,4], 87],
    [[6.08,2.89,9,4.8,2], [8,3,9,4,7.34], 93],
    ],
    columns=["for_x", "for_y", "Init"]
)

print(df)
in_x = df.for_x.iloc[0]
in_y = df.for_y.iloc[0]
plt.plot(in_x, in_y, 'b-')
plt.show()

打印数据框:

                     for_x               for_y  Init
0        [5, 3, 9, 4.8, 2]   [5, 3, 9, 4.8, 9]    33
1        [6, 3, 9, 4.8, 2]   [4, 3.8, 9, 8, 4]    87
2  [6.08, 2.89, 9, 4.8, 2]  [8, 3, 9, 4, 7.34]    93

如果您的数据框具有字符串条目,则eval函数会将其转换为列表,然后您可以从以下列表绘制数据:

df_2 = pd.DataFrame([
      ['[5,3,9,4.8,2]', '[5,3,9,4.8,9]', 33],
      ['[6,3,9,4.8,2]', '[4,3.8,9,8,4]', 87],
      ['[6.08,2.89,9,4.8,2]', '[8,3,9,4,7.34]', 93],
      ],
      columns=["for_x", "for_y", "Init"]
)

in_x = eval(df_2.for_x.iloc[0])
in_y = eval(df_2.for_y.iloc[0])

如果您的值不是逗号分隔的:

df_3 = pd.DataFrame([
      ['[5 3 9 4.8 2]', '[5 3 9 4.8 9]', 33],
      ['[6 3 9 4.8 2]', '[4 3.8 9 8 4]', 87],
      ['[6.08 2.89 9 4.8 2]', '[8 3 9 4 7.34]', 93],
      ],
      columns=["for_x", "for_y", "Init"]
)

string_of_nums_x = df_3.for_x.iloc[0].strip('[').strip(']')
in_x = [float(s) for s in string_of_nums_x.split()]

string_of_nums_y = df_3.for_y.iloc[0].strip('[').strip(']')
in_y = [float(s) for s in string_of_nums_y.split()]

绘图: enter image description here