我需要帮助才能将某些列的数据放入列表中。
假设我有这个test.txt
文件
30012 820202 999201
81910 882101 100291
88271 003300 221920
93929 719300
我想在单独的列表中保存偶数列和奇数列的数据。
我尝试了以下但没有得到我想要的正确答案。
import pandas as pd
fileRead = pd.read_fwf("test.txt", delim_whitespace = True, header=None, dtype=object)
indx = 0
for indx in range(len(fileRead.columns)):
if indx % 2 == 1:
channel1 = fileRead[indx].tolist()
else:
channel0 = fileRead[indx].tolist()
print "CH0:" + channel0
print "CH1:" + channel1
这产生了
CH1: ['820202', '882101', '003300', '719300']
CH0: ['999201', '100291', '221920', nan]
我想要的结果是
CH1: ['820202', '882101', '003300', '719300']
CH0: ['30012','81910','88271','93929','999201', '100291', '221920', nan]
我在这个剧本中错过了什么?感谢您的帮助和建议。
答案 0 :(得分:1)
选项1
您可以使用iloc
ch0 = fileRead.iloc[:, 0::2].stack().tolist()
ch1 = fileRead.iloc[:, 1::2].stack().tolist()
而不是stack
我可以使用numpy
的{{1}}。但是,我决定使用堆栈来利用它的隐式ravel
。这更依赖于dropna
'api,并且更加透明。
选项2
我们可以依靠pandas
以及
numpy
v = fileRead.values
ch0 = v[:, 0::2].ravel()
ch0 = ch0[~np.isnan(ch0)].tolist()
ch1 = v[:, 1::2].ravel()
ch1 = ch1[~np.isnan(ch1)].tolist()
ch0
['30012', '999201', '81910', '100291', '88271', '221920', '93929']
答案 1 :(得分:1)
您可以values
将df
转换为arrays
,然后选择列并使用numpy.ravel
进行展平。上次致电tolist
:
a = df.values
ch0 = a[:, ::2].ravel().tolist()
ch1 = a[:, 1::2].ravel().tolist()
print (ch0)
['30012', '999201', '81910', '100291', '88271', '221920', '93929', nan]
print (ch1)
['820202', '882101', '003300', '719300']