然后,我想使用以下代码将具有相同“ 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将在此编辑后一周失效)。
答案 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