python - 如何减少文本文件中列的所有元素?
问题描述
我有一个包含两列和 135001 行的文本文件。第一列是幅度,第二列是相关时间。我需要查看第一列并了解幅度增加和再次减少的位置,并且我需要提取相关时间。实际上我应该从第一列派生一个。当幅度增加时,我应该数一,然后我应该等到幅度达到零,然后再次执行此过程。正如我提到的,我也需要相关的时间。这是我正在考虑的非常原始的代码,我知道这不是真的,但我不知道如何完成它。对于第一步,我在减少第一列中的行时遇到了问题,并且出现了这个错误“str 无法转换为浮点数”。
n=0
with open('39-1+2.txt',"r") as f
for line in f
data=line.split(' ')[0]
time=line.split(' ')[1]
with open ('grad-time.txt', 'w') as s:
for i in range (0, 135001):
if
d= float(data[i+1])-float (data[i])>0
n=n+1
s.write("{}\n".format(d))
wait
float(data [i]= 0.0)
continue
例如,我有这个文件:
0 11
2 12
3 13
1 14
0 15
1 16
0 17
0 18
输出应该是这样的:
2 12
1 16
解决方案
由于您想使用前一行的值来决定当前行,您可以使用 pandas' shift
。这将允许您创建一个新列来保存前一行的值。
使用该逻辑,您只需要检查前一行是否为 0,并且当前值是否高于该值。
>>> import pandas as pd
>>> df = pd.DataFrame([[0,11],[2,12],[3,13],[1,14],[0,15],[1,16],[0,17],[0,18]])
>>> df['shift'] = df[0].shift(1)
>>> df
0 1 shift
0 0 11 NaN
1 2 12 0.0
2 3 13 2.0
3 1 14 3.0
4 0 15 1.0
5 1 16 0.0
6 0 17 1.0
7 0 18 0.0
>>> df[(df['shift']==0) & (df[0] > df['shift'])].drop(columns=['shift'])
0 1
1 2 12
5 1 16
推荐阅读
- html - 在前一个 div 被加载之前,第二个 div 出现在屏幕上
- gitlab - Gitlab API在根目录外创建一个带有`composer.json`的作曲家包
- ios - React Native Pod 安装失败
- pyspark - 在 Databricks 上处理 webhook 的策略
- javascript - 从数组中进行可能的笛卡尔组合
- dataframe - pyspark 从数据框中检索可变数量的值
- c# - 在 LINQ Npgsql Dot Net 6 中创建新数组时检测到异构类型映射
- php - PHPUnit:如何仅在以 Test 结尾的类中运行测试?
- boto3 - 使用 moto 模拟 DynamoDB 时,filter_expression 之间的属性不起作用
- slurm - Snakemake WorkflowError:无法将作业组合在一起