I am trying to join 4 dataframes for to make it more readable. I did try pd.concat([df1, df4], ignore_index=True, sort=False) but cannot produce the needed output.
# code being used
import pandas as pd
data = []
with open('datafile.txt', 'r') as file:
for line in file:
cols = line.strip().split()
data.append(cols)
df = pd.DataFrame(data, columns=['Object','Change'])
df['Change'] = df['Change'].astype(float)
df_sorted = df.sort_values(by='Change', ascending=False)
top_positive = df_sorted[df_sorted['Change'] > 0].head(5)
middle_values = df_sorted[(df_sorted['Change'] >= -2) & (df_sorted['Change'] <= 2)]
middle_positive = middle_values[middle_values['Change'] > 0].head(5)
middle_negative = middle_values[middle_values['Change'] < 0].tail(5)
bottom_values = df_sorted.tail(5)
df1 = top_positive(index=False) # Upper 5
df2 = middle_negative.iloc[::-1](index=False) # Middle 1
df3 = middle_positive(index=False) # Middle 2
df4 = bottom_values.iloc[::-1](index=False) #Lower 5
Current Output: # Truncated
| Object | Change | #- Upper 5
|:---------|---------:|
| 123ABDCA | 11.658 |
| ABDC123 | 11.468 |
| LLLSKS13 | 3.398 |
| Object | Change | #- Middle(-0.x to -2)
|:---------|---------:|
| AS716201 | -1.99 |
| 26SSASS | -1.989 |
| 1ASDS2A | -1.92 |
| Object | Change | #- Middle(0.x to 2)
|:----------|---------:|
| AS2QASD | 1.926 |
| AASSSD001 | 1.687 |
| 76ASDSD | 1.295 |
| Object | Change | #- Lower 5
|:-------------|---------:|
| 3ISKJSDA | -19.029 |
| 3474ADS | -14.391 |
| 5665SAA2 | -7.098 |
Need Output: # Intended Output
| Upper 5 | Middle(-0.x to -2) | Middle(0.x to 2) | Lower 5 |
|:---------|---------:|:---------|---------:|:----------|---------:|:-------------|---------:|
| 123ABDCA | 11.658 | AS716201 | -1.99 | AS2QASD | 1.926 | 3ISKJSDA | -19.029 |
| ABDC123 | 11.468 | 26SSASS | -1.989 | AASSSD001 | 1.687 | 3474ADS | -14.391 |
| 8BADC81 | 5.041 | 9KSKSUS | -1.939 | A009SKSS | 1.679 | 663KJDJS | -9.2 |
| 828282AS | 3.963 | A2DFASA | -1.922 | JFHHDW1 | 1.643 | 63ISMDSA | -9.153 |
| LLLSKS13 | 3.398 | 1ASDS2A | -1.92 | 76ASDSD | 1.295 | 5665SAA2 | -7.098 |