Python 将文件中的子集列分隔为子文件
我有一个小任务,我正在努力。所以基本上我们必须从TSV文件中读取列,并将所有可能的列子集导出到CSV。在导出之前,我们必须对代码进行清理(删除特殊字符,空格除外) 我遇到了这个子集代码,但我不确定如何在我的需求中使用它:Python 将文件中的子集列分隔为子文件,python,python-2.7,pandas,csv,subset,Python,Python 2.7,Pandas,Csv,Subset,我有一个小任务,我正在努力。所以基本上我们必须从TSV文件中读取列,并将所有可能的列子集导出到CSV。在导出之前,我们必须对代码进行清理(删除特殊字符,空格除外) 我遇到了这个子集代码,但我不确定如何在我的需求中使用它: import pandas as pd from itertools import chain, combinations def all_subsets(ss): return chain(*map(lambda x: combinations(ss,x), r
import pandas as pd
from itertools import chain, combinations
def all_subsets(ss):
return chain(*map(lambda x: combinations(ss,x), range(0, len(ss) + 1)))
subsets = all_subsets([1, 2, 3, 4])
for subset in subsets:
print(subset)
我认为需要按子集、进程和写入文件选择列:
df = pd.read_table(file)
#clean DataFrame by regex
#return list of all comprination of columns names
subsets = all_subsets(df.columns)
for subset in subsets:
df1 = df[list(subset)]
#join values of tuples to files names
df1.to_csv('_'.join(subset) + '.csv', index=False)
编辑:
要将列acm\U分类
添加到Dataframe
中,请使用:
df = pd.read_table('xa.tsv')
print (df.head())
def all_subsets(ss):
return chain(*map(lambda x: combinations(ss,x), range(0, len(ss) + 1)))
cols = [x for x in df.columns if not x == 'acm_classification']
subsets = all_subsets(cols)
#print (subsets)
for subset in subsets:
#filter subsets
if len(subset) > 1:
df1 = df[list(subset) + ['acm_classification']]
# print (df1)
df1.to_csv('_'.join(subset) + '.csv', index=False)
我认为需要按子集、进程和写入文件选择列:
df = pd.read_table(file)
#clean DataFrame by regex
#return list of all comprination of columns names
subsets = all_subsets(df.columns)
for subset in subsets:
df1 = df[list(subset)]
#join values of tuples to files names
df1.to_csv('_'.join(subset) + '.csv', index=False)
编辑:
要将列acm\U分类
添加到Dataframe
中,请使用:
df = pd.read_table('xa.tsv')
print (df.head())
def all_subsets(ss):
return chain(*map(lambda x: combinations(ss,x), range(0, len(ss) + 1)))
cols = [x for x in df.columns if not x == 'acm_classification']
subsets = all_subsets(cols)
#print (subsets)
for subset in subsets:
#filter subsets
if len(subset) > 1:
df1 = df[list(subset) + ['acm_classification']]
# print (df1)
df1.to_csv('_'.join(subset) + '.csv', index=False)
IIUC:
IIUC:
有
2**n
事物的总组合。我将使用这样一个事实,即n
事物的每一个组合都可以表示为1
或0
在从0
到2**n-1
的每个数字的二进制表示中
def all_subsets(n):
for i in range(1, 2 ** n):
yield np.array(list(f'{i:0{n}b}'), int).astype(bool)
df = pd.DataFrame([[1, 2, 3, 4]], columns=list('ABCD'))
print(*(df.loc[:, m].to_csv() for m in all_subsets(df.shape[1])), sep='\n')
有
2**n
事物的总组合。我将使用这样一个事实,即n
事物的每一个组合都可以表示为1
或0
在从0
到2**n-1
的每个数字的二进制表示中
def all_subsets(n):
for i in range(1, 2 ** n):
yield np.array(list(f'{i:0{n}b}'), int).astype(bool)
df = pd.DataFrame([[1, 2, 3, 4]], columns=list('ABCD'))
print(*(df.loc[:, m].to_csv() for m in all_subsets(df.shape[1])), sep='\n')
[1,2,3,4]
是列名吗?@jezrael是的,有四列A、B、C、D(名称供参考)你知道该函数的功能是什么,或者如何调用它吗?[1,2,3,4]
是列名吗?@jezrael是的,有四列A、B、C、D(名称供参考)你知道该函数的功能吗,或者如何调用它?名称错误:名称“lst”未定义名称错误:名称“lst”未定义属性错误:“\u csv.reader”对象没有属性“columns”获取此属性Error@FaqahatFareed-您是否通过df=pd.read\u table(file)
创建数据帧?非常感谢,它成功了,但是,在导出到子文件之前,您是否可以使用正则表达式帮助删除文本中的特殊字符?@fakahatfareed-我认为最好是创建新问题,我不觉得自己像正则表达式专家。简单的正则表达式理解,但更复杂的是,这对我来说真的很难。谢谢。谢谢,我删除了它,因为它没有执行单个{A}、{B}、{C}等操作。所以我必须更改为if len(subset)>0:它现在工作得很好!非常感谢!!AttributeError:“\u csv.reader”对象没有获取此信息的属性“columns”Error@FaqahatFareed-您是否通过df=pd.read\u table(file)
创建数据帧?非常感谢,它成功了,但是,在导出到子文件之前,您是否可以使用正则表达式帮助删除文本中的特殊字符?@fakahatfareed-我认为最好是创建新问题,我不觉得自己像正则表达式专家。简单的正则表达式理解,但更复杂的是,这对我来说真的很难。谢谢。谢谢,我删除了它,因为它没有执行单个{A}、{B}、{C}等操作。所以我必须更改为if len(subset)>0:它现在工作得很好!非常感谢!!