我有一个数据框,我需要将其分成两列以保持原始列的位置。

import pandas as pd
df = {'assigned_to': [
{'display_value': 'Michael', 'link': 'http://www.testlink.com'},
{'display_value': 'Vinod', 'link': 'http://www.testlink.com'},
{'display_value': 'Vinod', 'link': 'http://www.testlink.com'},
{'display_value': 'Carrie', 'link': 'http://www.testlink.com'},
{'display_value': 'Carrie', 'link': 'http://www.testlink.com'}]}
df = pd.DataFrame(df)

目前我正在尝试使用df['assigned_to.display_value'] = df['assigned_to'].str.split(',', expand=True)
但是 assigned_to.display_value 正在提出 NaN 作为它的人口。

我的预期结果是
     assigned_to.display_value    assigned_to.link          assigned_to
0    Michael                      http://www.testlink.com   {'display_value': 'Michael', 'link': 'http://www.testlink.com'}
1    Vinod                        http://www.testlink.com   {'display_value': 'Vinod', 'link': 'http://www.testlink.com'}
2    Vinod                        http://www.testlink.com   {'display_value': 'Vinod', 'link': 'http://www.testlink.com'}
3    Carrie                       http://www.testlink.com   {'display_value': 'Carrie', 'link': 'http://www.testlink.com'}
4    Carrie                       http://www.testlink.com   {'display_value': 'Carrie', 'link': 'http://www.testlink.com'}

最佳答案

让我们使用:

df[['Display_value','link']] = df.assigned_to.apply(pd.Series)

输出:
                                         assigned_to Display_value  \
0  {'display_value': 'Michael', 'link': 'http://w...       Michael
1  {'display_value': 'Vinod', 'link': 'http://www...         Vinod
2  {'display_value': 'Vinod', 'link': 'http://www...         Vinod
3  {'display_value': 'Carrie', 'link': 'http://ww...        Carrie
4  {'display_value': 'Carrie', 'link': 'http://ww...        Carrie

                      link
0  http://www.testlink.com
1  http://www.testlink.com
2  http://www.testlink.com
3  http://www.testlink.com
4  http://www.testlink.com

或者您可以使用 assign 并创建一个新的数据框:
df_out = df.assign(**df.assigned_to.apply(pd.Series))
print(df_out)

输出:
                                         assigned_to display_value  \
0  {'display_value': 'Michael', 'link': 'http://w...       Michael
1  {'display_value': 'Vinod', 'link': 'http://www...         Vinod
2  {'display_value': 'Vinod', 'link': 'http://www...         Vinod
3  {'display_value': 'Carrie', 'link': 'http://ww...        Carrie
4  {'display_value': 'Carrie', 'link': 'http://ww...        Carrie

                      link
0  http://www.testlink.com
1  http://www.testlink.com
2  http://www.testlink.com
3  http://www.testlink.com
4  http://www.testlink.com

关于python - 将 Pandas 列一分为二,保持原来的列不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47441717/

10-12 23:51