Python 替换表中的引号以计算唯一术语
我正在使用pandas读取一个excel文件,每个“公司”列中都包含如下项目: 我的df看起来像这样:Python 替换表中的引号以计算唯一术语,python,numpy,pandas,Python,Numpy,Pandas,我正在使用pandas读取一个excel文件,每个“公司”列中都包含如下项目: 我的df看起来像这样: firms 0 NaN 1 NaN 2 NaN 3 Benchmark Compa, Brean Capital, Noble Financia... 4 Fig Partners 5 Raymond James 6 Keefe Bruyette 7 Fbr Cap Markets, Fig Partners, Keefe Bruyette,... 8
firms
0 NaN
1 NaN
2 NaN
3 Benchmark Compa, Brean Capital, Noble Financia...
4 Fig Partners
5 Raymond James
6 Keefe Bruyette
7 Fbr Cap Markets, Fig Partners, Keefe Bruyette,...
8 Stifel Nicolaus, William Blair
9 NaN
我试图获得一个独特的公司列表并传递给python列表,因此我执行以下操作:
unique_firms = df.firms.unique()
但是,在完成此操作并转换为python列表以检查数组的内容之后
unique_firms.tolist()
我得到(部分输出):
ML的Bo和其他术语是重复的,因此我的代码没有选择唯一的术语。有没有办法创建一个新的pandas或numpy数组,其中包含在字符串中以逗号分隔的唯一术语 我从
In[141]: df
Out[141]:
firms
0 B Of A M L, Dougherty & Co., Goldman Sachs, Ra...
1 Zacks Small Cap
2 Wedbush Securit
3 B Of A M L, Cowen & Company, Deutsche Bk Sec, ...
很有趣,今天我对两个问题做了几乎相同的练习。在这里,您的数据结构也是混乱的,因为在同一列中有单独的条目(用逗号分隔)。我们首先解决以下问题:
In[144]: df2 = pd.DataFrame(df.firms.str.split(',').tolist())
In[145]: df2
Out[145]:
0 1 2 3 \
0 B Of A M L Dougherty & Co. Goldman Sachs Raymond James
1 Zacks Small Cap None None None
2 Wedbush Securit None None None
3 B Of A M L Cowen & Company Deutsche Bk Sec Fbr Cap Markets
4 Janney Mont. Jefferies & Co. Leerink Partner None
4
0 None
1 None
2 None
3 J.P. Morgan
4 None
现在我们可以简单地做了
In[148]: df2.stack().unique().tolist()
Out[148]:
['B Of A M L',
' Dougherty & Co.',
' Goldman Sachs',
' Raymond James',
'Zacks Small Cap',
'Wedbush Securit',
' Cowen & Company',
' Deutsche Bk Sec',
' Fbr Cap Markets',
' J.P. Morgan',
'Janney Mont.',
' Jefferies & Co.',
' Leerink Partner']
我从
In[141]: df
Out[141]:
firms
0 B Of A M L, Dougherty & Co., Goldman Sachs, Ra...
1 Zacks Small Cap
2 Wedbush Securit
3 B Of A M L, Cowen & Company, Deutsche Bk Sec, ...
很有趣,今天我对两个问题做了几乎相同的练习。在这里,您的数据结构也是混乱的,因为在同一列中有单独的条目(用逗号分隔)。我们首先解决以下问题:
In[144]: df2 = pd.DataFrame(df.firms.str.split(',').tolist())
In[145]: df2
Out[145]:
0 1 2 3 \
0 B Of A M L Dougherty & Co. Goldman Sachs Raymond James
1 Zacks Small Cap None None None
2 Wedbush Securit None None None
3 B Of A M L Cowen & Company Deutsche Bk Sec Fbr Cap Markets
4 Janney Mont. Jefferies & Co. Leerink Partner None
4
0 None
1 None
2 None
3 J.P. Morgan
4 None
现在我们可以简单地做了
In[148]: df2.stack().unique().tolist()
Out[148]:
['B Of A M L',
' Dougherty & Co.',
' Goldman Sachs',
' Raymond James',
'Zacks Small Cap',
'Wedbush Securit',
' Cowen & Company',
' Deutsche Bk Sec',
' Fbr Cap Markets',
' J.P. Morgan',
'Janney Mont.',
' Jefferies & Co.',
' Leerink Partner']
我从
In[141]: df
Out[141]:
firms
0 B Of A M L, Dougherty & Co., Goldman Sachs, Ra...
1 Zacks Small Cap
2 Wedbush Securit
3 B Of A M L, Cowen & Company, Deutsche Bk Sec, ...
很有趣,今天我对两个问题做了几乎相同的练习。在这里,您的数据结构也是混乱的,因为在同一列中有单独的条目(用逗号分隔)。我们首先解决以下问题:
In[144]: df2 = pd.DataFrame(df.firms.str.split(',').tolist())
In[145]: df2
Out[145]:
0 1 2 3 \
0 B Of A M L Dougherty & Co. Goldman Sachs Raymond James
1 Zacks Small Cap None None None
2 Wedbush Securit None None None
3 B Of A M L Cowen & Company Deutsche Bk Sec Fbr Cap Markets
4 Janney Mont. Jefferies & Co. Leerink Partner None
4
0 None
1 None
2 None
3 J.P. Morgan
4 None
现在我们可以简单地做了
In[148]: df2.stack().unique().tolist()
Out[148]:
['B Of A M L',
' Dougherty & Co.',
' Goldman Sachs',
' Raymond James',
'Zacks Small Cap',
'Wedbush Securit',
' Cowen & Company',
' Deutsche Bk Sec',
' Fbr Cap Markets',
' J.P. Morgan',
'Janney Mont.',
' Jefferies & Co.',
' Leerink Partner']
我从
In[141]: df
Out[141]:
firms
0 B Of A M L, Dougherty & Co., Goldman Sachs, Ra...
1 Zacks Small Cap
2 Wedbush Securit
3 B Of A M L, Cowen & Company, Deutsche Bk Sec, ...
很有趣,今天我对两个问题做了几乎相同的练习。在这里,您的数据结构也是混乱的,因为在同一列中有单独的条目(用逗号分隔)。我们首先解决以下问题:
In[144]: df2 = pd.DataFrame(df.firms.str.split(',').tolist())
In[145]: df2
Out[145]:
0 1 2 3 \
0 B Of A M L Dougherty & Co. Goldman Sachs Raymond James
1 Zacks Small Cap None None None
2 Wedbush Securit None None None
3 B Of A M L Cowen & Company Deutsche Bk Sec Fbr Cap Markets
4 Janney Mont. Jefferies & Co. Leerink Partner None
4
0 None
1 None
2 None
3 J.P. Morgan
4 None
现在我们可以简单地做了
In[148]: df2.stack().unique().tolist()
Out[148]:
['B Of A M L',
' Dougherty & Co.',
' Goldman Sachs',
' Raymond James',
'Zacks Small Cap',
'Wedbush Securit',
' Cowen & Company',
' Deutsche Bk Sec',
' Fbr Cap Markets',
' J.P. Morgan',
'Janney Mont.',
' Jefferies & Co.',
' Leerink Partner']
通过查看您的示例,我发现您有一堆NaN,您需要首先处理这些NaN:
df = df.dropna()
这是一个非常重要的步骤,在先前提出的解决方案中省略了这一步骤。下一步是其他用户的建议:
df2 = pd.DataFrame(df.firms.str.split(',').tolist())
firms = df2.stack().unique().tolist()
这应该会产生一份公司名单,这就是其他解释停止的地方。如果仔细检查,字符串开头会有一些尾随空格,因此:
' Dougherty & Co.',
将被视为独立于以下实体:
'Dougherty & Co.',
下一步是创建独特的公司列表,这也是我认为其他解决方案不起作用的另一个原因:
clean_list = []
for firm in firms:
firm = firm.strip()
if firm not in clean_list:
clean_list.append(firm)
clean_list.sort()
clean_list
['B Of A M L',
'Cowen & Company',
'Deutsche Bk Sec',
'Dougherty & Co.',
'Fbr Cap Markets',
'Goldman Sachs',
'J.P. Morgan',
'Janney Mont.',
'Jefferies & Co.',
'Leerink Partner',
'Raymond James',
'Wedbush Securit',
'Zacks Small Cap']
通过查看您的示例,我发现您有一堆NaN,您需要首先处理这些NaN:
df = df.dropna()
这是一个非常重要的步骤,在先前提出的解决方案中省略了这一步骤。下一步是其他用户的建议:
df2 = pd.DataFrame(df.firms.str.split(',').tolist())
firms = df2.stack().unique().tolist()
这应该会产生一份公司名单,这就是其他解释停止的地方。如果仔细检查,字符串开头会有一些尾随空格,因此:
' Dougherty & Co.',
将被视为独立于以下实体:
'Dougherty & Co.',
下一步是创建独特的公司列表,这也是我认为其他解决方案不起作用的另一个原因:
clean_list = []
for firm in firms:
firm = firm.strip()
if firm not in clean_list:
clean_list.append(firm)
clean_list.sort()
clean_list
['B Of A M L',
'Cowen & Company',
'Deutsche Bk Sec',
'Dougherty & Co.',
'Fbr Cap Markets',
'Goldman Sachs',
'J.P. Morgan',
'Janney Mont.',
'Jefferies & Co.',
'Leerink Partner',
'Raymond James',
'Wedbush Securit',
'Zacks Small Cap']
通过查看您的示例,我发现您有一堆NaN,您需要首先处理这些NaN:
df = df.dropna()
这是一个非常重要的步骤,在先前提出的解决方案中省略了这一步骤。下一步是其他用户的建议:
df2 = pd.DataFrame(df.firms.str.split(',').tolist())
firms = df2.stack().unique().tolist()
这应该会产生一份公司名单,这就是其他解释停止的地方。如果仔细检查,字符串开头会有一些尾随空格,因此:
' Dougherty & Co.',
将被视为独立于以下实体:
'Dougherty & Co.',
下一步是创建独特的公司列表,这也是我认为其他解决方案不起作用的另一个原因:
clean_list = []
for firm in firms:
firm = firm.strip()
if firm not in clean_list:
clean_list.append(firm)
clean_list.sort()
clean_list
['B Of A M L',
'Cowen & Company',
'Deutsche Bk Sec',
'Dougherty & Co.',
'Fbr Cap Markets',
'Goldman Sachs',
'J.P. Morgan',
'Janney Mont.',
'Jefferies & Co.',
'Leerink Partner',
'Raymond James',
'Wedbush Securit',
'Zacks Small Cap']
通过查看您的示例,我发现您有一堆NaN,您需要首先处理这些NaN:
df = df.dropna()
这是一个非常重要的步骤,在先前提出的解决方案中省略了这一步骤。下一步是其他用户的建议:
df2 = pd.DataFrame(df.firms.str.split(',').tolist())
firms = df2.stack().unique().tolist()
这应该会产生一份公司名单,这就是其他解释停止的地方。如果仔细检查,字符串开头会有一些尾随空格,因此:
' Dougherty & Co.',
将被视为独立于以下实体:
'Dougherty & Co.',
下一步是创建独特的公司列表,这也是我认为其他解决方案不起作用的另一个原因:
clean_list = []
for firm in firms:
firm = firm.strip()
if firm not in clean_list:
clean_list.append(firm)
clean_list.sort()
clean_list
['B Of A M L',
'Cowen & Company',
'Deutsche Bk Sec',
'Dougherty & Co.',
'Fbr Cap Markets',
'Goldman Sachs',
'J.P. Morgan',
'Janney Mont.',
'Jefferies & Co.',
'Leerink Partner',
'Raymond James',
'Wedbush Securit',
'Zacks Small Cap']
@LMNYC,您开始使用的数据帧可能与FooBar在此处放置的数据帧不完全匹配-如果您创建的
df2
看起来与此处显示的一样,我可以确认第二部分工作正常。@LMNYC,您开始使用的数据帧可能与FooBar在此处放置的数据帧不完全匹配-如果您创建的df2
与此处显示的数据帧一样,我可以确认第二部分工作正常。@LMNYC,您开始使用的数据帧可能与FooBar在此处放置的数据帧不完全匹配-如果您创建的df2
与此处显示的数据帧一样,我可以确认第二部分工作正常。@LMNYC,您开始使用的数据帧可能与FooBar放在此处的内容不完全匹配-如果您创建的df2
看起来与此处所示的一样,我可以确认第二部分工作正常。