我的数据框df
如下所示,ID
列是一个列表。
Name Title ID
ED HHH [11111, 11112, 11113, 11114]
AD BBB [11119, 11133]
我想首先将列ID
转换为字符串,因为我假设这是我希望列继续下一步的方式。下一步是数据框df
与数据透视表基本相反,如下所示。
我希望我的数据框df
看起来像这样
Name Title ID
ED HHH 11111
ED HHH 11112
ED HHH 11113
ED HHH 11114
AD BBB 11119
AD BBB 11133
我已经尝试了
df['ID'] = df['ID'].str.split(', ')
df['ID'] = df['ID'].str.join(map(str,df['ID']))
df['ID'] = str(df['ID']).strip(', ')
df['ID'] = ''.join(str(x) for x in df['ID'])
它并没有给我我想要的东西,或者它耗尽了太多的RAM并锁定了我的电脑。
任何帮助或提示?我是否必须首先将列表转换为字符串以将其放入我想要的输出中?
答案 0 :(得分:3)
尝试按照此回答pandas: How do I split text in a column into multiple rows?
在您的情况下,会有一点点修改,如下所示:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# since you have a column of lists skip any type of string munging
# instead, go straight to converting the lists to a Series
s = df['ID'].apply(Series,1).stack()
s.index = s.index.droplevel(-1)
s.name = 'ID'
del df['ID']
df = df.join(s)
请注意,此示例完全忽略了DataFrame的索引;您可能需要更新或reset_index()
。