Python 拆分单元格值并更新现有列

Python 拆分单元格值并更新现有列,python,python-3.x,pandas,Python,Python 3.x,Pandas,只是简单描述一下我的问题。 我有两列[姓名]和[地址] 以某种方式,partialaddress与从csv文件导入的名称位于同一单元格中 我想拆分“2/”上拆分的名称列中的字符串,并将地址部分添加到列[address]中,并将名称保留在[name]列中。 当[address]为空时移动它,如果[address]不为空则加入。 请在下面找到一个样本 来自csv的原始数据: name;address Markus M Berg;Kirchenallee 52 Johanna P Wirth 2/Uf

只是简单描述一下我的问题。 我有两列[姓名]和[地址] 以某种方式,partialaddress与从csv文件导入的名称位于同一单元格中

我想拆分“2/”上拆分的名称列中的字符串,并将地址部分添加到列[address]中,并将名称保留在[name]列中。 当[address]为空时移动它,如果[address]不为空则加入。 请在下面找到一个样本

来自csv的原始数据:

name;address
Markus M Berg;Kirchenallee 52
Johanna P Wirth 2/Ufnau Strasse 48;
Felix B Beike 2/Mohrenstrasse 47;Dormettingen
现状

name                               | address
------------------------------------------------------------
Markus M Berg                      | Kirchenallee 52
Johanna P Wirth 2/Ufnau Strasse 48 |
Felix B Beike 2/Mohrenstrasse 47   | Dormettingen
理想情况:

name                               | address
------------------------------------------------------------
Markus M Berg                      | Kirchenallee 52
Johanna P Wirth                    | Ufnau Strasse 48
Felix B Beike                      | Mohrenstrasse 47 Dormettingen
在r'\d/'上拆分并重新分配:

v = df.name.str.split(r'\d/', expand=True).fillna('')

df['name'] = v.iloc[:, 0].str.strip()
df['address'] = v.iloc[:, 1].str.cat(df['address'], sep=' ').str.strip()
在r'\d/'上拆分并重新分配:

v = df.name.str.split(r'\d/', expand=True).fillna('')

df['name'] = v.iloc[:, 0].str.strip()
df['address'] = v.iloc[:, 1].str.cat(df['address'], sep=' ').str.strip()

单元格是否有NaN或空白?单元格为空白。如示例中所示,问题在于如何在pandas中读取csv。找出用于分割数据的分隔符。你试过pd.read_csv'your_data.csv',sep='\t'吗?如果您包含原始数据的虚拟样本,我们可能会提供帮助!单元格是否有NaN或空白?单元格为空白。如示例中所示,问题在于如何在pandas中读取csv。找出用于分割数据的分隔符。你试过pd.read_csv'your_data.csv',sep='\t'吗?如果您包含原始数据的虚拟样本,我们可能会提供帮助!我用你的代码得到了不同的结果。0和2是正确的,但对于1,名称是正确的Johanna P Wirth,但地址是NaN。@JohnDoe只有在地址列中有NaN而不是空白时才可能。这就是我问你的原因。请先填写NAN,然后使用df['address']=df['address'].fillna运行我的代码。我使用您的代码得到了不同的结果。0和2是正确的,但对于1,名称是正确的Johanna P Wirth,但地址是NaN。@JohnDoe只有在地址列中有NaN而不是空白时才可能。这就是我问你的原因。请先填写NAN,然后使用df['address']=df['address'].fillna运行我的代码。