.csv加载会在每个单元格的一列中重复所有条目

时间:2019-03-23 19:57:58

标签: python pandas csv

我正在尝试使用以下结构加载给定的csv文件: .csv sample

然后,我想使用以下代码将具有相同“ Sent_ID”的所有单词合并为一行:

train = pd.read_csv("train.csv")
# Create a dataframe of sentences.
sentence_df = pd.DataFrame(train["Sent_ID"].drop_duplicates(), columns=["Sent_ID", "Sentence", "Target"])
for _, row in train.iterrows():
    print(str(row["Word"]))
    sentence_df.loc[sentence_df["Sent_ID"] == row["Sent_ID"], ["Sentence"]] = str(row["Word"])

但是,print(str(row [“ Word”]))的结果是:

Name: Word, Length: 4543833, dtype: object
0                     Obesity
1                          in
2                        Low-
3                         and
4               Middle-Income
5                   Countries
...

,即列中每个给定行的每个单词。所有行都会发生这种情况。 打印整行会得到:

id                                                        89
Doc_ID                                                     1
Sent_ID                                                    4
Word       0                     Obesity\n1              ...
tag                                                        O
Name: 88, dtype: object

这再次表明每个单元格中都存在“单词”列的每个元素。 (第88个条目在.csv文件中不是“ Obesity \ n1”。

我尝试更改read_csv函数中的quoting参数,以及手动将标头插入names参数中。

如何确保每个数据框条目仅包含其自己的单词?

我添加了带有某些示例here的pastebin(pastebin将在此编辑后一周失效)。

2 个答案:

答案 0 :(得分:1)

使用groupby()

df = df.groupby('Sent_ID')['Word'].apply(' '.join).reset_index()

您可以将多列分组为一个列表。像这样 df.groupby(['Doc_ID','Sent_ID','tag'])

答案 1 :(得分:1)

OP以@Aravinds答案为基础,希望得到一个可行的示例:

www.myWebsite.com

现在我们将数据加载为from io import StringIO csv = StringIO(''' <paste csv snippet here> ''' df = pd.read_csv(csv) # Print first 5 rows print(df.head()) id Doc_ID Sent_ID Word tag 0 1 1 1 Obesity O 1 2 1 1 in O 2 3 1 1 Low- O 3 4 1 1 and O 4 5 1 1 Middle-Income O ,可以使用该方法将单词组合成句子。

pandas.DataFrame