我有一个如下所示的数据框:
[Column1] [Column2]
0 16155.22300 1.246982
1 16193.009 BMS1P17,BMS1P18,BMS1P22,DUXAP8
2 16231.289 LINC01297
5 16265.05300 2.156268
6 16287.937 POTEH,POTEH-AS1
7 16288.53800 2.156268
10 17645.92500 44.765792
11 17646.335 HDHD5,HDHD5-AS1
12 17646.44400 44.765792
15 18073.59200 103.154877
16 18073.656 LOC101929372,SLC25A18
17 18073.84300 103.154877
我想制作仅包含column2字符串的列表。我对此的解决方案是这样的:
my_list=list(i for i in ndf['LDU'] if isinstance(i, basestring))
由于某种原因,它不起作用,它返回所有值。任何建议都非常感谢!
答案 0 :(得分:5)
您可以使用:
df['Column2'].loc[pd.to_numeric(df['Column2'], errors='coerce').isnull()]
或者如果你想要它在列表中。
list(df['Column2'].loc[pd.to_numeric(df['Column2'], errors='coerce').isnull()])
答案 1 :(得分:3)
您可以使用:
def checker(txt):
try:
float(txt)
return False
except:
return True
df[df['[Column2]'].apply(checker)]
# [Column1] [Column2]
#1 16193.009 BMS1P17,BMS1P18,BMS1P22,DUXAP8
#2 16231.289 LINC01297
#6 16287.937 POTEH,POTEH-AS1
#11 17646.335 HDHD5,HDHD5-AS1
#16 18073.656 LOC101929372,SLC25A18
答案 2 :(得分:2)
这是一个快速解决方案:
import pandas as pd
df = pd.DataFrame({"a":[2,3,4], "b":["string",2,'m']})
my_list = []
for index, row in df["b"].iteritems(): #change b to your col name
if type(row) == str:
my_list.append(row)
print(my_list)
输出:['字符串',' m']