如何在Python中合并特定列中的特定行
如果有更简单的方法,请告诉我。我在Python中读取了一个.txt文件,但定界不一致。我尝试在其他间距技术中使用“t”制表符分隔符间距,但似乎列之间的间距比其他的多。因此,这并不是那么简单 我加载了数据如何在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) 但是,问题是数据帧的第一列(名称)由字符串组成。其中
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
中不存在。为了匿名,我更改了名称。我更新了其他的一切