Python 如何使用split()方法从现有字符串列创建新的Dataframe列?

Python 如何使用split()方法从现有字符串列创建新的Dataframe列?,python,pandas,string,dataframe,series,Python,Pandas,String,Dataframe,Series,我有一个dataframe列,其中包含如下数据: | column_1 | | -------- | | 1:3 | | 1:4 | | 1:6 | | 5:6 | | column_1 | left_split | right_split | | -------- | -------------- | -------------- | | 1:3 | 1 | 3 | | 1:

我有一个dataframe列,其中包含如下数据:

| column_1 | 
| -------- | 
| 1:3      | 
| 1:4      |
| 1:6      |
| 5:6      | 
| column_1 | left_split     | right_split |
| -------- | -------------- | -------------- |
| 1:3      | 1              | 3              |
| 1:4      | 1              | 4              |
| 1:6      | 1              | 6              |
| 5:6      | 5              | 6              |
df[['left_split', 'right_split']] = df['column_1'].str.split(':', expand=True)
我想把这列分成两列,如下所示:

| column_1 | 
| -------- | 
| 1:3      | 
| 1:4      |
| 1:6      |
| 5:6      | 
| column_1 | left_split     | right_split |
| -------- | -------------- | -------------- |
| 1:3      | 1              | 3              |
| 1:4      | 1              | 4              |
| 1:6      | 1              | 6              |
| 5:6      | 5              | 6              |
df[['left_split', 'right_split']] = df['column_1'].str.split(':', expand=True)
现在我尝试使用以下代码:

df['left_split'] = df['column_1'].split(':')[0]
df['right_split'] = df['column_1'].split(':')[1]
df['left_split'] = df['column_1'].lsplit(':')
df['right_split'] = df['column_1'].rsplit(':')
该代码:

df['left_split'] = df['column_1'].split(':')[0]
df['right_split'] = df['column_1'].split(':')[1]
df['left_split'] = df['column_1'].lsplit(':')
df['right_split'] = df['column_1'].rsplit(':')
还有:

df['left_split'] = df['column_1'].strip(':')[0]
df['right_split'] = df['column_1'].strip(':')[1]
但是,这些代码返回一个属性错误“'Series'对象没有属性'split'”

当我键入以下内容时,我感到困惑:

df['column_1'].iloc[1].split(':')[0]
它工作并显示左侧数字,但当我删除iloc(将其应用于所有列)并将其分配给新列时,它不工作

非常感谢你在这方面的帮助


谢谢,

您可以在split中使用
expand=True
参数,如下所示:

| column_1 | 
| -------- | 
| 1:3      | 
| 1:4      |
| 1:6      |
| 5:6      | 
| column_1 | left_split     | right_split |
| -------- | -------------- | -------------- |
| 1:3      | 1              | 3              |
| 1:4      | 1              | 4              |
| 1:6      | 1              | 6              |
| 5:6      | 5              | 6              |
df[['left_split', 'right_split']] = df['column_1'].str.split(':', expand=True)
完整示例:

import pandas as pd
df = pd.DataFrame( {'column_1': {1: '1:3', 2: '1:4', 3: '1:6', 4: '5:6'}})
df[['left_split', 'right_split']] = df['column_1'].str.split(':', expand=True)

print(df)
#   column_1 left_split right_split
# 1      1:3          1           3
# 2      1:4          1           4
# 3      1:6          1           6
# 4      5:6          5           6

这对我不起作用,但我使用了相同的概念,使用拆分语法(不包括参数expand)将我想要的列转换为列表字典,然后使用for循环将每个列表中的每个元素剥离为两个单独的列表,然后将每个新列表分配回我想要的列。我希望有另一种方法使用更少的代码,但是我实现了我想要的嘿,到底是什么不起作用?它带来了一个值错误我添加了完整的示例,只是复制粘贴,以便您可以看到每个步骤。至于你自己的代码。它不起作用,因为例如.strip()是一个字符串方法。这意味着您只能将其与字符串一起使用,而不能使用pandas.Series()来获取pandas.Series的字符串表示形式,您需要使用:
.str
,因此在代码中只需像这样添加str:
df['column_1'].str.split(':')[0]