从具有多个字符串的列中获取get_dummies类型数据帧的最快方法
发布于 2021-01-29 19:34:06
我有一列“ col2”,其中包含字符串列表。我当前的代码太慢了,大约有2000个唯一的字符串(以下示例中的字母)和4000行。最终为2000列和4000行。
In [268]: df.head()
Out[268]:
col1 col2
0 6 A,B
1 15 C,G,A
2 25 B
有没有一种快速的方法来使它成为假人格式?每个字符串都有其自己的列,并且如果该行在col2中具有该字符串,则在每个字符串的列中都有0或1。
In [268]: def get_list(df):
d = []
for row in df.col2:
row_list = row.split(',')
for string in row_list:
if string not in d:
d.append(string)
return d
df_list = get_list(df)
def make_cols(df, lst):
for string in lst:
df[string] = 0
return df
df = make_cols(df, df_list)
for idx in range(0, len(df['col2'])):
row_list = df['col2'].iloc[idx].split(',')
for string in row_list:
df[string].iloc[idx]+= 1
Out[113]:
col1 col2 A B C G
0 6 A,B 1 1 0 0
1 15 C,G,A 1 0 1 1
2 25 B 0 1 0 0
这是我目前的代码,但是太慢了。
谢谢您的帮助!
关注者
0
被浏览
87
1 个回答