Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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中使用该数据创建列(需要4列)_Python_Delimiter - Fatal编程技术网

读取列的所有行,检查是否有分隔符,如果找到,则在Python中使用该数据创建列(需要4列)

读取列的所有行,检查是否有分隔符,如果找到,则在Python中使用该数据创建列(需要4列),python,delimiter,Python,Delimiter,我有一列数据,如下所示(数据类型:object): 预期产出: Col A Col B Col C Col D 1324 Hi how are you//where Cool place Nice are you: I am in London 5649 Hello Christina Awesome Trip Fantastic 我需要检查所有行中的分隔符“@”。为前4个事件创建4列

我有一列数据,如下所示(数据类型:object):

预期产出:

Col A  Col B                    Col C         Col D
1324   Hi how are you//where    Cool place    Nice
       are you: I am in London
5649   Hello Christina          Awesome Trip  Fantastic
我需要检查所有行中的分隔符“@”。为前4个事件创建4列,对于接下来的4个事件,需要将数据追加到上表中提到的相同4列的下一行中


如能找到任何可能的解决办法,将不胜感激。提前谢谢

此操作可以使用拆分:

df.ColumnA.str.split('@').tolist()
输出将是一个列表列表,可用于根据您的要求创建新的数据帧

[['1324',
  'Hi how are you//where are you: I am in London',
  'Cool place',
  'Nice'],
 ['5649', 'Hello Christina', 'Awesome Trip ', 'Fantastic']]
要直接创建相应拆分的新数据帧,可以使用:

new_df=pd.DataFrame(df.name_of_column.str.split('@').tolist(),
                                   columns = ['a','b','c','d'])
p.s.列数应等于要切换的列的任何元素中的最大列数@


实现数据帧的快速方法是将
expand=True
传递给str.split。这仅在数据是行分隔的情况下才有效。如果你能接受
Col 0
而不是
Col A
,这将成为一项简单的任务

df['Column A'].str.split('@', expand=True).add_prefix('Col ')
完整示例

import pandas as pd

data = '''\
Column A
1324@Hi how are you//where are you: I am in London@Cool place@Nice
5649@Hello Christina@Awesome Trip@Fantastic'''

fileobj = pd.compat.StringIO(data)
df = pd.read_csv(fileobj, sep='|')
df2 = df['Column A'].str.split('@', expand=True).add_prefix('Col ')

print(df2)
印刷品:

  Col 0                                          Col 1         Col 2  \
0  1324  Hi how are you//where are you: I am in London    Cool place   
1  5649                                Hello Christina  Awesome Trip   

       Col 3  
0       Nice  
1  Fantastic  

我只想添加此解决方案;)
  Col 0                                          Col 1         Col 2  \
0  1324  Hi how are you//where are you: I am in London    Cool place   
1  5649                                Hello Christina  Awesome Trip   

       Col 3  
0       Nice  
1  Fantastic