我有一个csv文件,包含计算流体力学(CFD)模拟的结果(我的csv文件的示例作为google驱动器链接附加;文件大小:1,392 as )。特别是,csv文件提供了关于多条流线的信息(流线的数量可能会达到1000条,视情况而定)。所有流线的所有数据都被背靠背地保存在csv文件中(因此没有空行或什么东西可以告诉我们一个流线的结束和下一个流线的开始)。我能区分流线的唯一方法是,当列"IntegrationTime“中的值为零时,它表示一个新流线的开始,直到我们在”IntegrationTime“列中达到另一个零,这是下一个流线的开始。
我需要读取这个csv文件,并将其数据组织成Pandas数据名称列表,例如:
streamlineList = [df_for_streamline_1, df_for_streamline_2, ...., df_for_streamline_N]注意(这里的附加问题):这并不重要,但最好有:如果您查看我的csv文件的末尾,您会看到多个IntegrationTime为零的行(确切地说,是100行)。最好,我不需要在最后的数据帧列表中包括这些行。
有人能帮我做这件事吗?
https://drive.google.com/file/d/1lJhOJadGrno1C-KZOUqxV-KNkaOHIJNk/view?usp=sharing
发布于 2021-03-30 02:34:58
通过逐行思考或逐条流线来解决这个问题是可能的.
对于每一个可以与IntegrationTime == 0.0匹配的流线,从数据帧中提取切片,并将幻灯片附加到输出列表中(如果它有多个数据点)。下面这样的代码应该解决这个问题:
import pandas as pd
# read the dataset
df = pd.read_csv("vel.csv")
# get row indexes where integrationtime is zero (start of each streamline)
start_index_list = df.loc[df['IntegrationTime']==0.0].index.values
stream_line_list = [] # the output list
for i in range(len(start_index_list)):
# for each stream line, obtain the slice of the original dataframe that corresponds to it
start_index = start_index_list[i]
end_index = None
if i+1 < len(start_index_list):
end_index = start_index_list[i+1]-1
stream_line_df = df.loc[start_index:end_index]
# only append streamline with more than 1 data point
if len(stream_line_df) > 1:
stream_line_list.append(stream_line_df)
print(f"number of complete streamlines found: {len(stream_line_list)}")
```https://datascience.stackexchange.com/questions/92327
复制相似问题