Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中合并特定列中的特定行_Python_Merge_Split - Fatal编程技术网

如何在Python中合并特定列中的特定行

如何在Python中合并特定列中的特定行,python,merge,split,Python,Merge,Split,如果有更简单的方法,请告诉我。我在Python中读取了一个.txt文件,但定界不一致。我尝试在其他间距技术中使用“t”制表符分隔符间距,但似乎列之间的间距比其他的多。因此,这并不是那么简单 我加载了数据 df=pd.read\u表格(data.txt,header=None) 这给了我一个字符串列,然后我使用stringsplit将数据分成我需要的8列。拆分前的数据帧: df=df['col1'].str.split(expand=True) 但是,问题是数据帧的第一列(名称)由字符串组成。其中

如果有更简单的方法,请告诉我。我在Python中读取了一个.txt文件,但定界不一致。我尝试在其他间距技术中使用“t”制表符分隔符间距,但似乎列之间的间距比其他的多。因此,这并不是那么简单

我加载了数据

df=pd.read\u表格(data.txt,header=None)

这给了我一个字符串列,然后我使用stringsplit将数据分成我需要的8列。拆分前的数据帧:

df=df['col1'].str.split(expand=True)

但是,问题是数据帧的第一列(名称)由字符串组成。其中一些字符串有两个或三个单独的单词,所以当我使用stringsplit时,字符串的每一部分都被放入自己的列中。现在,我需要将列1、2、有时还有3的选定行合并到同一单元格中

当前数据结构:

    a   b   c   d   e   f
0   Bantam  1601    6   3   0   2
1   Malacca Strait  1606    14  11  0
2   Ilha    das Naus    1606    6   9
3   Pulo    Butum   1606    7   9   0
4   Surrat  1615    6   0   4   1.5
从上面的数据框可以看出,字符串splint的名称被放在多个列中,其中name1表示字符串的第一部分,name2表示第二部分,name3表示第三部分

我希望dataframe看起来像什么:

        a            b      c   d   e   f
0   Bantam          1601    6   3   0   2
1   Malacca Strait  1606    14  11  0
2   Ilha das Naus   1606    6   9
3   Pulo Butum      1606    7   9   0
4   Surrat          1615    6   0   4   1.5
是否有方法合并这些单元格,使“我的姓名”列包含姓名的所有部分(如有必要,还包括姓名1、姓名2和姓名3)


我研究了连接和合并,但我不知道如何在特定的单元格上进行。我还在学python。谢谢你的帮助

我假设您的
data.txt
文件在列之间包含两个以上的空格。如果是这样,您可以将
sep
参数与正则表达式一起使用,如下所示:

import pandas as pd
if __name__ == '__main__':
    df = pd.read_csv('data/data.txt', sep='\s{2,}', header=None, engine="python")
    print(df)
结果:

                0     1   2   3  4      5  6  7
0          Bantam  1601   6   3  0  2.000  0  0
1  Malacca Strait  1606  14  11  0  1.273  0  0
2   Ilha das Naus  1606   6   9  0  0.667  0 -1
3      Pulo Butum  1606   7   9  0  0.778  0  1
4          Surrat  1615   6   0  4  1.500  0  0
5   Ilha das Naus  1615   3   5  0  0.600  0 -1
6            Jask  1620   4   0  4  1.000  0  0

在拆分数据帧之前,请共享它的一个示例。@MayankPorwal刚刚添加!还请根据刚刚添加的df更新预期输出。此外,请确保编辑列名。目前,您正在使用
col1
,这在您的主
df
中不存在。为了匿名,我更改了名称。我更新了其他的一切