我有一些文本文件,其中有文本和数字条目。更具体地说,所有这些文件的前两行和第一列都是文本,所有其他条目都由数字组成。作为一个例子,让我们考虑三个单独的文本文件(文件A、B和C),格式如下所示。在
文件A:
Type A1 A2 A3 A4 A5
Tag TagA1 TagA1 TagA1 TagA2 TagA2
object1 1.1 2.1 3.1 4.1 5.1
object2 1.2 2.2 3.2 4.2 5.2
object4 1.4 2.4 3.4 4.4 5.4
object7 1.7 2.7 3.7 4.7 5.7
object8 1.8 2.8 3.8 4.8 5.8
object9 1.9 2.9 3.9 4.9 5.9
文件B:
^{pr2}$文件C:
Type C1 C2 C3 C4
Tag TagC1 TagC1 TagC2 TagC2
object1 21.1 22.1 23.1 24.1
object4 21.4 22.4 23.4 24.4
object5 21.5 22.5 23.5 24.5
object6 21.6 22.6 23.6 24.6
object7 21.7 22.7 23.7 24.7
object9 21.9 22.9 23.9 24.9
我想使用python创建一个单独的文本文件,其中只包含这三个文件中存在的行(从第3行开始)(即行的交集)。最后一个文本文件将保留所有这三个文件中的相关列。以下是我想要的最终文件:
Type A1 A2 A3 A4 A5 B1 B2 C1 C2 C3 C4
Tag TagA1 TagA1 TagA1 TagA2 TagA2 TagB1 TagB2 TagC1 TagC1 TagC2 TagC2
object1 1.1 2.1 3.1 4.1 5.1 11.1 12.1 21.1 22.1 23.1 24.1
object4 1.4 2.4 3.4 4.4 5.4 11.4 12.4 21.4 22.4 23.4 24.4
object7 1.7 2.7 3.7 4.7 5.7 11.7 12.7 21.7 22.7 23.7 24.7
object9 1.9 2.9 3.9 4.9 5.9 11.9 12.9 21.9 22.9 23.9 24.9
我意识到,我可以使用pandas导入上述每个文本文件,命令如下:
df = pd.read_csv('filename.txt',sep='\t', header=[0,1], index_col=0)
一旦有了文件A、B和C,如何使用python来生成最终文件?我想使用Python2.7来实现这一点。在
正如
@Jamin
所评论的那样,您可以直接使用join='inner'
来保持最安全的一面,而不会丢失nan,即您还可以使用
^{pr2}$concat
和dropna
,dropna将删除缺少值的行,这样您只剩下在所有文件中找到的行,即如果您确认每个数据帧中都没有nan,那么这个解决方案仍然有效。在
使用^{} -
或
^{pr2}$这给了你一个简单的方法用钥匙连接-
计时
@黑暗
@维维克
@Vivek(第二个-使用join)
由于按键操作没有任何麻烦,@Dark的解决方案效率略高一些。但由于OP提到只包含这三个文件中存在的那些行(从第3行开始),所以我使用了
merge
的方式,而不是concat
的方式相关问题 更多 >
编程相关推荐