从数据帧的示例开始,最简单的解释是:
TimeStamp 382.098 382.461 383.185 383.548
10:28:00 0.012448 0.012362 0.0124485 0.012362
10:30:00 0.0124135 0.0123965 0.0124135 0.012431
10:32:00 0.0551035 0.0551725 0.055931 0.0563105
10:34:00 0.055586 0.0557245 0.056655 0.0569485
10:36:00 0.055586 0.055776 0.0568105 0.057362
Run Code Online (Sandbox Code Playgroud)
我希望我的输出是:
TimeStamp 382 383
10:28:00 0.012405 0.01240525
10:30:00 0.012405 0.01242225
10:32:00 0.05513 0.05612075
10:34:00 0.05565525 0.05680175
10:36:00 0.055681 0.05708625
Run Code Online (Sandbox Code Playgroud)
所以,我想查看列名值,如果它们与整数相同,我希望输出col具有每个时间索引值的平均值.
我的想法是使用df.round将列标题舍入为最接近的整数,然后使用.mean()以某种方式对轴= 0应用相同col标题的均值.但是,我在数据帧索引类型上使用round函数时出错.
编辑:基于答案,我用过
df.rename(columns=dict(zip(df.columns[0:], df.columns[0:]\
.values.astype(float).round().astype(str))),inplace=True)
df = df.groupby(df.columns[0:], axis=1).mean()
Run Code Online (Sandbox Code Playgroud)
它会混淆列名和值,而不是根据col名称给出我的意思......不知道为什么!
我试图绘制一组图形,上面覆盖着一个显示它们之间百分比差异的图。
我用于绘图的代码:
%%output size = 200
%%opts Curve[height=200, width=400,show_grid=True,tools=['hover','box_select'], xrotation=90]
%%opts Curve(line_width=1)
from bokeh.models import Range1d, LinearAxis
new_df = new_df.astype('float')
percent_diff_df = percent_diff_df.astype('float')
def twinx(plot, element):
# Setting the second y axis range name and range
start, end = (element.range(1))
label = element.dimensions()[1].pprint_label
plot.state.extra_y_ranges = {"foo": Range1d(start=0, end=150)}
# Adding the second axis to the plot.
linaxis = LinearAxis(axis_label='% Difference', y_range_name='foo')
plot.state.add_layout(linaxis, 'right')
wavelength = hv.Dimension('wavelength', label = 'Wavelength', unit = 'nm')
radiance = hv.Dimension('radiance', label = 'Radiance', unit = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在一个带有辅助 y 轴的图形上绘制两组图形。我无法让它们都根据数据进行自动缩放。
我无法设置范围,因为我正在标记 10 个数字,并且代码将用于范围会有所不同的不同来源。另外,目前,我将一个范围设置为特定值,但我希望将它们都设置为自动缩放。
数据框看起来像:
波长 340 440 550 ... 340std 440std 2017-07-01 14:40 2.05 3.02 2.14 ... 0.002 0.00054 ....
TOOLS = "pan,wheel_zoom,box_zoom,reset,save"
p = figure(tools=TOOLS, x_axis_type='datetime',plot_height=400,
plot_width=700,
outline_line_color = 'gray',
y_axis_label = 'Radiance[W/m^2.sr.nm]',
y_range = DataRange1d()
)
# Setting the second y axis range name and range
p.extra_y_ranges = {"foo": Range1d(start=0, end=0.000006)}
# Adding the second axis to the plot.
p.add_layout(LinearAxis(y_range_name="foo"), 'right')
p.line(x='Time', y='340.0', line_color="darkcyan", line_width=1,
source=source)
p.line(x='Time',y='340.0std', line_color = 'red', line_width=1,
y_range_name="foo", source=source)
one = …Run Code Online (Sandbox Code Playgroud) 我试图比较在哪个索引中,一个 dataframe1 中的 timedelta 值等于另一个 dataframe2 中的 timedelta 值,然后修剪具有更多值的数据帧,使它们同时开始:
数据集 1:
TimeStamp Col1 ... Col2500
0 days 10:37:34 346 ... 635
0 days 10:38:34 124 ... 546
0 days 10:39:34 346 ... 745
Run Code Online (Sandbox Code Playgroud)
数据集2:
TimeStamp Col1 ... Col50
0 days 10:25:20 123 ... 789
0 days 10:25:45 183 ... 787
...
...
0 days 10:37:40 223 ... 789
for i in df2.index:
if str(df1.index[0])[7:12] == str(df2.index[i])[7:12]:
index_value = i
break
df2 = df2.drop(df2.index[[0,i-1]])
Run Code Online (Sandbox Code Playgroud)
预期输出将是 Dataset2 与 Dataset1 同时开始(最接近分钟)