【发布时间】:2019-04-08 07:58:03
【问题描述】:
我的 .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。这些似乎都不起作用...
【问题讨论】:
标签: python pandas csv dataframe reshape