【发布时间】:2021-12-10 20:47:41
【问题描述】:
我有一个 csv 文件,其中的数据如下所示,数据的排列方式如下:第一行中的 x1,y1 和第二行中的 x2,y2 以及 x1,y1 然后 x2,y2 等等。
0.0 0.0
2.500000E-03 0.0
5.000000E-03 0.0
7.500000E-03 0.0
1.000000E-02 2.721289E-05
1.250000E-02 6.772091E-04
1.500000E-02 3.154052E-03
1.750000E-02 7.072636E-03
2.000000E-02 9.175906E-03
2.250000E-02 8.454774E-03
输出应该是 x1, y1, x2, y2 格式的文本文件,并带有一些附加格式,如下所示。 (开头和结尾处的 astrix 以及额外的空格)
* 0.000000E+00 0.000000E+00 2.500000E-03 0.000000E+00*
* 5.000000E-03 0.000000E+00 7.500000E-03 0.000000E+00*
* 1.000000E-02 2.721289E-05 1.250000E-02 6.772091E-04*
* 1.500000E-02 3.154052E-03 1.750000E-02 7.072636E-03*
* 2.000000E-02 9.175906E-03 2.250000E-02 8.454774E-03*
我尝试使用下面的代码并得到了输出,但零被写为 0.0 而不是指数的 8 位数字,而且我认为这可以以更简单的方式完成。如果有其他可能的解决方案,请告诉我。
df_rfile = pd.DataFrame(r_file)
df_temp = df_rfile[0].str.split(" ", n=1, expand=True)
df_temp[1] = df_temp[1].str.strip()
df_odd = df_temp[::2]
df_odd.reset_index(inplace=True, drop=True)
df_even = df_temp[1::2]
df_even.reset_index(inplace=True, drop=True)
df_final = pd.concat([df_odd, df_even], axis=1)
dfasString = df_final.to_string(header=False, index=False)
for eachline in dfasString.splitlines():
x = eachline.split()
modified_str = '*'+x[0].rjust(23,' ')+x[1].rjust(16,' ')+x[2].rjust(16,' ')+x[3].rjust(16,' ')+'*'
final_out.write(modified_str+'\n')
【问题讨论】:
标签: python pandas string dataframe