例如,我有:
0 1 2 0 1 2 0 1 2 ...
0 | a c e | r t v | alpha gamma epsilon ...
1 | b d f | s u w | beta delta zeta ...我想要找回:
0 1 2 ...
0 | a | r | alpha ...
1 | b | s | beta ...
2 | c | t | gamma ...
3 | d | u | delta ...
4 | e | v | epsilon ...
5 | f | w | zeta ...我的DataFrames比这个要大得多,所以最好给出一个通用的解决方案。例如,如果我有300个列,每个列有10000行,那么我想检索每列30000行的100个列。这些文件是通过Fortran代码生成的,在默认情况下,Fortran代码将它们分组为3列。我现在读它们的时候:
pd.concat((pd.read_csv(file, sep='\s+', header=None, skiprows=0,
engine='c', dtype=np.float64, low_memory=False)
for file in list_glob), axis='columns')谢谢!
发布于 2020-06-04 13:03:39
让我们试试numpy的reshape和transpose
pd.DataFrame(df.values.reshape(len(df),3,-1)
.transpose(2,0,1)
.reshape(3*len(df),-1)
)输出:
0 1 2
0 a r alpha
1 b s beta
2 c t gamma
3 d u delta
4 e v epsilon
5 f w zeta您可以在连接之前操作从read_csv读取的数据:
pd.concat((pd.read_csv(file, sep='\s+', header=None, skiprows=0,
engine='c', dtype=np.float64, low_memory=False)
.melt()[['value']] # turn each dataframe into single-column one
for file in list_glob), axis='columns')https://stackoverflow.com/questions/62193390
复制相似问题