根据内容 CSV python 提取列

Extract a column based on its contents CSV python

我有一个如下所示的 csv 文件

h1,h2,h3
1 year,homo sapiens,fibrous tissue
3 minutes,homo sapiens,fibrous tissue
2 hours,homo sapiens,epithelial tissue

我正在尝试获取其中包含我提供的字符串的那一列。例如,如果我说年份,则需要将整个列附加到列表中,例如 [1 年,3 分钟,2 小时]。我完全不知道如何进行。非常感谢任何帮助。

编辑:问题在于,数据可以在任何列中。

我们可以使用列表理解以及 anystr.contains 的组合:

In [183]:
# filter the columns for only those that contain our text of interest
cols_of_interest = [col for col in df if any(df[col].str.contains('year'))]
cols_of_interest
Out[183]:
['h1']
In [184]:
# use the list as a column filter
df[cols_of_interest]
Out[184]:
          h1
0     1 year
1  3 minutes
2    2 hours

因此,这会通过调用矢量化 str 方法 contains.

来测试列中的 any 值是否包含感兴趣的文本

将列表理解包装到返回列表的函数中会很容易:

In [185]:

def cols_contains(text):
    return [col for col in df if any(df[col].str.contains(text))]

df[cols_contains('year')]
Out[185]:
          h1
0     1 year
1  3 minutes
2    2 hours

试试这个

f=open('your_file.csv','r')

x=[]
for i in f:
    x.append(i)


"first column"

for i in range(len(x)):
    print x[i].split(',')[0]

输出 h1

1 年

3 分钟

2 小时

"Second Column"


for i in range(len(x)):
    print x[i].split(',')[1]

输出:

h2

智人

智人

智人