我有一个熊猫数据框,其中的轴有Time [s],Time [s] .1,Time [s] .2等等,直到时间[s] .30。我想找出具有最大分辨率的列。为此,我需要将这些全部置于for循环中。由于名称'Time [s] .x'是一个字符串,我不知道如何从0到30迭代它。
for i in df['Time[s]."Something to write here"]:
示例输入数据帧:(列直到时间[s] .30)
Time[s] v1 Time[s].1 v2
160.84621 0 160.84808 7
161.14613 0 161.14802 7
示例输出:'Time[s]'
因为(df['Time[s]'][1] - df['Time[s]][0])
的区间小于。(df['Time[s].1'][1] - df['Time[s].1][0])
wdActiveEndAdjustedPageNumber
。
我需要检查所有30列。
答案 0 :(得分:1)
我认为需要:
print (df)
Time[s] v1 Time[s].1 v2 Time[s].2 v3 Time[s].3 v4
0 160.84621 0 160.84808 7 168.84621 0 162.84808 7
1 161.14613 0 161.14802 7 170.14613 0 164.14802 7
2 163.12613 0 161.14852 7 170.64613 0 Disable this function 7
3 165.16613 0 161.14892 7 170.24613 0 160.14802 7
df1 = df.filter(like='Time').apply(lambda x: pd.to_numeric(x, errors='coerce')).diff()
print (df1)
Time[s] Time[s].1 Time[s].2 Time[s].3
0 NaN NaN NaN NaN
1 0.29992 0.29994 1.29992 1.29994
2 1.98000 0.00050 0.50000 NaN
3 2.04000 0.00040 -0.40000 NaN
s = df1.idxmin(axis=1)
print (s)
0 NaN
1 Time[s]
2 Time[s].1
3 Time[s].2
dtype: object
<强>解释强>:
DataFrame.filter
Time
对所有列进行过滤
to_numeric
,参数errors='coerce'
表示将非数字转换为NaN
s DataFrame.diff
DataFrame.idxmin