只是一个简单的问题,使用pandas to_csv()
函数我将pandas数据框保存为具有以下结构的.csv文件:
在:
df.to_csv(output_file, sep = '|')
输出:
|id|column2|column3
0|id_1|bla bla bla bla|more strings
1|id_2|bla bla bla bla|more strings
2|id_3|bla bla bla bla|more strings
....
n-1|id_n|bla bla bla bla| more strings
上一个文件的问题是格式,因为您可以看到.csv文件左侧有一个错误的列:
|id|
0|
1|
2|
....
n-1|
从一开始,我就试着删除那个实际上没有名字的专栏:
df.drop('',axis=1)
print list(df.columns.values)
['id', 'column2', 'column3]
然而,它没有奏效。如何使用to_csv()
函数将以前的.csv文件重构为类似的内容?:
id|column2|column3
id_1|bla bla bla bla|more strings
id_2|bla bla bla bla|more strings
id_3|bla bla bla bla|more strings
....
id_n|bla bla bla bla|more strings
更新
在@piRSquared的回答中,我尝试按如下方式重新格式化csv文件:
print list(df.columns.values)
return df.to_csv(output_file, sep='|', index_col=1)[['column1','column2', 'column3']]
#return df.to_csv(output_file, sep = '|')
然而,我得到了这个:
['id', 'content', 'POS-tagged_content']
Traceback (most recent call last):
File "script.py", line 48, in <module>
preprocess_files(input_file, output_file)
File "script.py", line 39, in postag_pandas
return df.to_csv(output_file, sep='|', index_col=1)[['column1','column2', 'column3']]
TypeError: 'NoneType' object has no attribute '__getitem__'
答案 0 :(得分:2)
尝试:
df.set_index('id')
df
是您的数据框
IIUC
您提供的是csv文件中的文本,您将其导入到pandas数据框中。当你说:
时,这会令人困惑如何将之前的数据框重构为这样的内容?:
我相信您已经混淆了什么是数据帧以及什么是csv。
csv it text或带有要解析的文本的文件。通常,此文本以逗号分隔。 ( C omma S eparated V alues)
pandas / python上下文中的数据帧是一个python对象。
所有这一切,我相信你的意思是:
如何使用此文本导入csv,以便我无法获得第一列。
text = """|id|column2|column3
0|id_1|bla bla bla bla|more strings
1|id_2|bla bla bla bla|more strings
2|id_3|bla bla bla bla|more strings
n-1|id_n|bla bla bla bla| more strings"""
df = pd.read_csv(StringIO(text), sep='|', index_col=1)[['column2', 'column3']]
print df
看起来像:
column2 column3
id
id_1 bla bla bla bla more strings
id_2 bla bla bla bla more strings
id_3 bla bla bla bla more strings
id_n bla bla bla bla more strings
从这里你可以保存到这样的csv:
df.to_csv('./mycsv.csv')
产生
id,column2,column3
id_1,bla bla bla bla,more strings
id_2,bla bla bla bla,more strings
id_3,bla bla bla bla,more strings
id_n,bla bla bla bla, more strings
你说的是你想要的。
答案 1 :(得分:2)
print df.to_string(index=False)
这将打印没有索引的数据帧。
>>> print df
id column2 column3
0 id_1 bla bla bla bla more strings
1 id_2 bla bla bla bla more strings
2 id_3 bla bla bla bla more strings
>>> print df.to_string(index=False)
id column2 column3
id_1 bla bla bla bla more strings
id_2 bla bla bla bla more strings
id_3 bla bla bla bla more strings
答案 2 :(得分:1)
看起来其中一列有一个空白字符串,你可以drop
:
class ClassB(Class*):
def __init__(self, name, lst=None, other=None):
self.my_A = ClassA(lst, ...)