Мой .csv выглядит так:
Res X XB XC O P
A312 76.55 - - - -
B313 175.4 62.28 32.62 8.189 121.2
J314 176.5 53.34 40.77 8.277 124.6
L315 177.9 55.29 41.44 8.427 125.5
T316 174.7 59.47 63.43 8.264 116.1
...
G378 10.2 58.91 40.13 7.646 126.7
Я хотел бы изменить его следующим образом:
312 A X 76.55
313 B X 175.4
313 B XB 62.28
313 B XC 32.62
...
378 G O 7.646
378 G P 126.7
import pandas as pd
df1 = pd.read_csv("my_file.csv", delim_whitespace = True, index_col = False, na_values = "-")
df2 = pd.read_csv("my_file.csv", delim_whitespace = True, index_col = False, na_values = "-")
df1['Pos'] = df1['Res'].str[1:].astype(int)
df1['AA'] = df1['Res'].str[0]
df2.drop('Res', axis = 1, inplace = True)
a = df2.stack(level = -1)
b = df1[["Pos", "AA"]]
print(a)
print(b)
это приводит к:
Вывод изprint(a)
:
0 X 76.500
1 X 175.400
XB 62.280
XC 32.620
O 8.189
P 121.200
...
62 X 10.200
XB 58.910
XC 40.130
O 7.646
P 126.700
Вывод из print(b)
:
0 312 A
1 313 B
2 314 J
3 315 L
...
62 378 G
Любые идеи о том, как я могу сделать последний шаг, то есть объединить эти два df, a
и b
и, наконец, достичь желаемого формата?Я уже попробовал несколько pandas
функций, таких как pd.merge
, pd.join
и pd.concat
.Кажется, ничего из этого не работает ...