我正在做一些模拟实验。通过可变参数(在本例中仅限于rpm
)进行的系统分析,并将结果数据帧results_df
的最后一行附加到汇总数据帧df
中,该数据帧包含根据变化的rpm
给出系统的行为。
为了得到一个合适的绘图和数据分析索引,我将列表中的不同值(这里是rpm
)转换为pandas系列ser
,并用包含我感兴趣的结果的汇总数据框df
来连接这个系列。
因为我感兴趣的每个计算的结果只是每个计算的最后一行,所以我使用.tail(1)
从results数据框results_df
中提取这些数据。
到目前为止,我所做的工作如下片段所示:
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()
for i, val in enumerate(rpm):
results_df = get_some_data_from_somwhere()
df_list.append(results_df.tail(1))
df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
我得到的这个csv文件的格式如下:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0.25 303,317 323,372 302,384 324,332
但是,我希望索引列上有三个十进制数字和一个逗号作为十进制符号,如下所示:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0,250 303,317 323,372 302,384 324,332
因此,在使用.to_csv
命令将数据帧导出到csv文件时,index
和decimal
符号选项似乎不应用于索引列。
既然设置了index
选项,并且所有值(索引列除外)都具有正确的格式和十进制符号,那么我如何实现这种行为?
我必须以某种方式处理索引列吗?
我会重写你的两条底线:
进入
这是一种解决方法,但正如您所注意到的,关键字参数
decimal=
和float_format=
只作用于数据列,而不作用于索引。我要做的是用
reset_index
将索引放入数据帧,然后告诉to_csv(index=False
不要将索引保存到文件中(因为它现在在数据中)。另外,自己打开一个文件流(
with open('foo.csv', 'w') as f:
)最好留给pandas,当您只给它一个字符串'foo.csv'
作为第一个参数时,pandas自己就可以做到这一点。相关问题 更多 >
编程相关推荐