我目前正在创建一个数据库,其中的表是从excel工作簿的特定列。该算法在一个目录中迭代,并将工作表保存为pandas数据帧,然后从那里选择列:
df1 = pd.read_excel(file, 'sheet1')
从那里我选择我需要的数据
def create_list(df1):
i = 0
list1 = []
while isinstance(df1['foo-bar'][i], int):
list1.append(df1['foo-bar'][i])
i += 1
return list1
我面临的问题是,有时列的名称不是“foo-bar”,而是“foo.bar”。例如,如果该列包含'foo‘,有什么方法可以选择它吗?还是选择'foo-bar‘或'foo.bar’的' Or‘运算符?
我知道应该有一种来自sql的LIKE方法,但我更喜欢用熊猫来做。
发布于 2018-08-14 20:58:21
您可以这样使用DataFrame.filter
...由于df1是一个数据帧:
df1 = df1.filter(regex=("^foo.*"))
发布于 2018-08-14 21:01:17
import re
regex = re.compile("^foo.*")
columnsThatYouWant = []
for i in dataframe.columns:
if bool(regex.match(i))):
columnsThatYouWant.append(i)
然后,您可以使用其中的所有列。
这称为正则表达式。
^foo.*表示以foo开头,以任意字符(“.”)结尾的字符串。长度不限(“*”)
https://stackoverflow.com/questions/51841615
复制相似问题