我有一个系列A
,它看起来像:
data = {'Animal':['a.Bear', 'b.Elephant', '123.Giraffe', 'Kangaroo']}
A = pd.DataFrame(data)
Animal
0 a.Bear
1 b.Elephant
2 123.Giraffe
3 Kangaroo
一个dataframe df
:
column_names = ['Lion', 'Tiger', 'Bear', 'Elephant', 'Giraffe', 'Kangaroo', 'Rhino', 'Cat', 'Dog']
data = {animal: [random.random() for _ in range(10)] for animal in column_names}
df = pd.DataFrame(data)
Lion Tiger Bear Elephant Giraffe Kangaroo Rhino \
0 0.435419 0.139088 0.799243 0.095464 0.252427 0.300750 0.537184
1 0.536742 0.798354 0.359454 0.962717 0.900115 0.192034 0.255388
2 0.400937 0.999050 0.464974 0.082873 0.807442 0.152231 0.888681
3 0.962247 0.585496 0.826572 0.964859 0.061535 0.661318 0.626811
4 0.315054 0.241821 0.183458 0.767684 0.932423 0.605995 0.121704
5 0.975635 0.321856 0.640700 0.269786 0.603920 0.451022 0.202050
6 0.281994 0.790526 0.074202 0.318642 0.825572 0.006433 0.376935
7 0.002314 0.599871 0.883832 0.838671 0.193689 0.983202 0.365913
8 0.488496 0.226901 0.318186 0.527369 0.722069 0.152814 0.181855
9 0.059592 0.483801 0.419581 0.378362 0.064484 0.263958 0.183479
Cat Dog
0 0.457674 0.930943
1 0.171235 0.465397
2 0.230023 0.732982
3 0.094517 0.373322
4 0.885030 0.852047
5 0.759202 0.521539
6 0.683882 0.520186
7 0.635325 0.832302
8 0.950867 0.395677
9 0.929706 0.858686
我想只选择df
中名称包含在A
系列中的列。
我试过:
df.loc[:,A['Animal].str.contains(df.columns)]
但我得到错误:
TypeError: unhashable type: 'Index'
3条答案
按热度按时间jdg4fx2g1#
验证码
输出[截断为每个系列4个元素]:
中级
:
:
xriantvc2#
一个选项是预处理系列,然后选择阵列:
上面的解决方案对拆分器做了一些假设。更通用的方法是使用列表解析:
lztngnrs3#
我会使用regex来实现:
Cat
不应与Catfish
匹配),请在extract
中使用fr'\b({target})\b
。*输出量: