python - 满足条件时如何根据id在2个数据帧之间建立连接?
问题描述
我正在尝试根据来自另一个数据帧的关键字从一个数据帧中提取句子,我工作得很好,但是我有另一个数据帧用于另一种语言的相同句子,但顺序和 ID 相同,所以我想从其他数据帧以及基于第一个匹配 ID 的数据帧是否可行?我正在尝试的代码是这个
wdata = pd.read_csv(firstfile, nrows=0).columns[0]
skip = int(wdata.count(' ') == 0)
wdata = pd.read_csv(firstfile, names=['sentences'], skiprows=skip)
data = wdata['sentences'].str.replace('[^\w\s]', ' ')
tdata = pd.read_csv(secondfile, nrows=0).columns[0]
skip = int(tdata.count(' ') == 0)
tdata = pd.read_csv(secondfile, names=['sentences'], skiprows=skip)
sata = tdata['sentences'].str.replace('[^\w\s]', ' ')
keywords=pd.read_csv(dic)
keywords=keywords.loc[keywords['freq'].between(200, 2499, inclusive=False), 'word']
newdata = data[data.str.split(expand=True).isin(keywords.tolist()).any(axis=1)]
update = data[~data.str.split(expand=True).isin(keywords.tolist()).any(axis=1)]
newdata.to_csv("new_data.csv", index=False, header=False)
update.to_csv("update.csv", index=False, header=False)
----------------------
#first dataframe example
----------------------
#how are you
#I want to die
#I was home
#I went to sleep at work
#he have a bad reputation
#it was me who went to him
#have good sleep home
----------------------
#second dataframe example
----------------------
#halaw kuy bashii
#damawe bmrm
#la malawa bum
#la esh nustm
#aw kabraya bash nya
#awa mn bum chum bo lay
#xaweki xosh basar bba la malawa
----------------------
#the keyward example example
----------------------
#word freq
#and 500
#you 450
#me 300
#have 250
#your 240
#sleep 200
#work 150
#home 100
#die 50
现在这段代码可以很好地从第一个数据帧中给我想要的句子,但是我如何分配它,以便根据匹配的 ID 从第二个数据帧中获取句子,例如条件为真并且它从数据帧中获取第一句话1 到一个新的 csv 文件,然后将数据帧中的第一个也放入一个单独的 csv 中,依此类推
这是我得到的代码
我想根据满足的第一个数据帧条件获得相同的 ID,并将其转储到新的 csv 中以用于第二个数据帧,以便输出
解决方案
如果两个 DataFrame 的行数和索引相同,则可以将掩码从第一个传递DataFrame
到第二个,例如:
print (data.index.equals(df2.index))
True
newdata2 = df2[data.str.split(expand=True).isin(keywords.tolist()).any(axis=1)]
print (newdata2)
sentences
0 halaw kuy bashii
4 aw kabraya bash nya
5 awa mn bum chum bo lay
6 xaweki xosh basar bba la malawa 1
如果要按索引匹配:
newdata = data[data.str.split(expand=True).isin(keywords.tolist()).any(axis=1)]
print (newdata)
0 how are you
4 he have a bad reputation
5 it was me who went to him
6 have good sleep home
Name: sentences, dtype: object
newdata2 = df2[df2.index.isin(newdata.index)]
print (newdata2)
sentences
0 halaw kuy bashii
4 aw kabraya bash nya
5 awa mn bum chum bo lay
6 xaweki xosh basar bba la malawa 1
推荐阅读
- html - 如何隐藏可编辑内容的可调整大小边框?
- sql-server - 我怎样才能在我的查询中求和?附上 Sql 服务器查询
- android - 用另一个 EditText 动态替换 TextInputLayout 中的 EditText
- excel - EXCEL公式——CountIf——如何排除满足一定条件的单元格
- python - Pandas groupby mean() 不忽略 NaN
- c - 使用 C 中的 openmp,如何并行化包含 qsort 的嵌套比较函数的 for 循环?
- docker - 同一个 Zalenium 容器中的多个浏览器
- jquery - 单击按钮内的元素在Firefox中不起作用
- angular - 如何在我的 Angular 项目中实现 HTML+CSS 模板?
- python - NameError:未定义名称“第一个”我该怎么办?