我有一个独特的情况,我不知道如何表达它以获得与我在谷歌中类似的问题的答案。我有一个 Pandas 数据帧,这些数据帧中的每个行号对应于我需要数据的文件名。例如,row 1
对应于文件1.txt
,row 2
对应于文件2.txt
。我需要能够使用行号导航到some/path/1.txt
下的这些文本文件,并使用linecache
获取文件的第二行并将其附加到数据帧中的列下。最终结果将是这样的:
Some_data Important_column
stuff data_extracted_from_line_2_of_some/path/1.txt
more_stuff data_extracted_from_line_2_of_some/path/2.txt
more_stuff data_extracted_from_line_2_of_some/path/3.txt
我有一种感觉,这将lambda
关键字,但我不确定该怎么做,因为数据位于数据帧之外的文件中。
遍历index
并使用其值构造传递给linecache
的字符串,怎么样?
import linecache
import os
import pandas as pd
print('Files in file path:n')
files = os.listdir('path_to_files')
print(files,'n')
df = pd.DataFrame(index=range(1,len(files)+1), columns=['Important_column'])
df['Important_column'] = [linecache.getline(os.path.join('path_to_files', str(i) + '.txt'),2) for i in df.index]
print("Df:n")
print(df)
输出:
Files in file path:
['1.txt', '2.txt', '3.txt']
Df:
Important_column
1 I am file 1n
2 I am file 2n
3 I am file 3n
可能需要其他编辑才能删除n