我有一个数据框,我需要将其分成两列以保持原始列的位置。
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/