读取列的所有行,检查是否有分隔符,如果找到,则在Python中使用该数据创建列(需要4列)
我有一列数据,如下所示(数据类型:object): 预期产出:读取列的所有行,检查是否有分隔符,如果找到,则在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列
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