我有以下两个系列:
self.MW_x = ..
self.MW_x = .. (from previous calculations)
我把它们拉在一起就像这样:
self.MW_final = list(zip(self.MW_x, self.MW_y))
并尝试使用numpy.savetxt
np.savetxt("testfile.txt", self.MW_final, delimiter = ";", header = "x_Value, y_Value")
如果我直接绘制它(self.MW_x,self.MW_y),它看起来像这样,这是完美的:
但是如果我再次尝试绘制保存的文本文件,它看起来像这样:
我只是不知道在去文件的路上发生了什么,然后回来了。
答案 0 :(得分:0)
你是否可以通过numpy以分号分隔符导出它?如果没有,那么简单地通过Pandas导出也会容易得多。即。)
df = pd.DataFrame({"x_value":self.MW_x, "y_value": self.MW_y})
df.to_csv("testfile.txt")
df_again = pd.read_csv("testfile.txt")
另外,在你回答这个问题的答案中,你有:
x_val = df.ix[0:]
y_val = df.ix[1:]
为x_val返回行 0到N(N = len(df)),为y_val返回行 1到N.这就是为什么你得到两个不同长度的数组。
要从pandas DataFrame中调用列,您可以编写:
x_val = df['col_name1']
y_val = df['col_name2']
或者更简单地说,如果' col_name2'是你的x轴变量,你可以这样做:
df.set_index('col_name2', inplace = True)
df.plot()
将绘制变量' col_name1'在y轴上反对'col_name2'在x轴上。
答案 1 :(得分:0)
您是否尝试过每一步查看前5行数据(self.MW_x的前5行,self.MW_final,/ Users / sping /Desktop / testfile.txt,df,x_val和y_val)弄清楚数据在哪里发生变化?
我认为你对如何使用ix有疑问
x_val = df.ix[0:]
y_val = df.ix[1:]
没有抓住第一列和第二列。它抓住第一行直到结束[0:]
,第二行直到结束[1:]
。因此,x_val将比y_val长1行。你想用
x_val = df.ix[:,0]
y_val = df.ix[:,1]
ix的第一个参数为您提供行,第二个参数为您提供列。
如果要使用列标题,还要设置header = 0或者将其保留为默认值。 Python使用零索引,因此第一行是第0行,而不是第1行。
我看起来你在发布的代码中有一些拼写错误。您还在使用';'使用np.savetxt和'进行保存时的分隔符,'作为使用pd.read_csv阅读时的分隔符。