Skip to content
Advertisement

Python rows and columns arrangment

I have this below data file and I want three columns with heading “TIMESTEP”, “id” and “mass”.

Its corresponding values are just immediately below itenter image description here. How to do it. Please help

Below link 1 is my snapshot of data file and 2 is my desired arrangement.

Advertisement

Answer

I agree with the comments that the question is hard to understand, but from my understanding of your problem I have found this solution:

import pandas as pd

data_input = """TIMESTEP
5000
id mass
TIMESTEP
5100
id mass 
42 24
TIMESTEP
5200
id mass
99 123
32 84
79 424"""

columns=["TIMESTEP", "id", "mass"]
data = []
previous_line = ""

for line in data_input.split("n"):
    if columns[0] in previous_line and columns[1] not in line:
        data.append({"TIMESTEP": line})
    elif columns[1] in previous_line and columns[0] not in line:
        data[len(data)-1]["id"], data[len(data)-1]["mass"] = line.split(" ")
    elif all(col not in line for col in columns):
        data.append({"TIMESTEP": data[len(data)-1]["TIMESTEP"]})
        data[len(data)-1]["id"], data[len(data)-1]["mass"] = line.split(" ")
    
    previous_line = line

df = pd.DataFrame(data)
print(df)

Try to run this script and see if this is what you were looking for.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement