我有一列“ 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
这是我目前的代码,但是太慢了。
谢谢您的帮助!
您可以使用:
>>> df['col2'].str.get_dummies(sep=',')
A B C G
0 1 1 0 0
1 1 0 1 1
2 0 1 0 0
要加入数据框:
>>> pd.concat([df, df['col2'].str.get_dummies(sep=',')], axis=1)
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
我有一个相当大的数据帧(11k行和20列)。其中一列的数据类型是混合的,主要是数字(float),其中有少量字符串分散在各处。 在使用混合列中的数据执行一些统计分析之前,我通过查询其他列来对该数据帧进行子集划分(但如果存在字符串,则无法执行此操作)。99%的时间,一旦子集这个列是纯数字的,但很少字符串值会在子集中结束,我需要捕获它。 通过Pandas混合类型列循环检查字符串(或者反过来检查整个列是
我在spark dataframe中有一个包含文本的列。 我想提取所有以特殊字符开头的单词,我正在使用从该文本列的每一行中提取。如果文本包含以开头的多个单词,则只返回第一个单词。 我正在寻找提取多个符合我在火花模式的单词。 样本输入:< code>@always_nidhi @YouTube不,我不明白,但我喜欢他们的音乐和舞蹈真棒这首mve的所有歌曲都很摇滚 示例输出:
问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即
我正在从我的数据框中查询一个值,它似乎是“dtype:object”。我只想按原样打印值,而不打印索引或其他信息。我该怎么做? 预期产出:b
我有一个大数据框(prices),它包含一个长描述和一个与该描述相关联的价格。我生成了另一个数据框(单词),它保存了那些长描述中的所有唯一单词。我试图做的是从prices数据框中获取特定单词的平均价格,然后将其存储在单词dataframe中,与单词所在的行相同。 我设法获得了一个特定单词的平均值,但当我尝试在单词数据框中循环时,它花费了太多的时间。 这适用于单个值: 这是我尝试运行的循环: 示例数
问题内容: 我正在执行以下操作: 返回以下内容: 我只想知道此字段是“ URLField”。如何从此输出中提取出来? 注意:我这样做是为了对字段进行验证。例如,如果是url,我想检查它是否格式正确。 问题答案: 如果你这样做: 结果你可能无法获得。 相反,你正在这样做: 其中,作为解释在这里,不调用该方法,它只是指的是方法绑定方法的对象。返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建