![](/img/trans.png)
[英]Python 3.4 - Pandas - Rearranging rows based on value of one column of a Dataframe
[英]Python 3.4 - Pandas - Extract Rows Based on Column of another Dataframe Including Duplicates
我有两个输入数据框,格式为:
Word colA colB colC ID
python A B C 1
word D E F 1
of G H I 1
python J K L 2
is M N O 2
of P Q R 3
另一个格式为:
V1 V2 V3 V4
the 0.1 0.2 0.3
python 0.4 0.5 0.6
excel 0.6 0.7 0.8
is 0.9 0.10 0.6
access 0.7 0.5 0.6
of 0.5 1.2 7.8
tell 0.9 3.2 4.5
pandas 0.5 0.4 0.3
让我们调用第一个数据帧df1和第二个数据帧df2。
我想知道如何基于V1来对df2进行子集化,这些术语与df1 ['Word']的术语相同。 如果V1中的术语在df1 ['Word']中没有匹配项,我希望这些行用零填充。 另外,另一个要点是我想包含重复项。 我也想将“ ID”列复制到df2数据框。
我的预期输出将采用以下格式:
V1 V2 V3 V4 ID
python 0.4 0.5 0.6 1
word 0.0 0.0 0.0 1
of 0.5 1.2 7.8 1
python 0.4 0.5 0.6 2
is 0.9 0.10 0.6 2
of 0.5 1.2 7.8 3
我能够成功识别输出数据框中的术语并将其子集化,而不会显示重复项。 但是包括术语的重复对我来说是一个挑战。 在将df1 ['ID']列成功复制到输出数据帧的末尾时,我也需要帮助。
我将不胜感激。
谢谢。
采用:
df = (pd.merge(df1.rename(columns={'Word':'V1'})[['V1', 'ID']],
df2, on='V1', how='left')
.fillna(0)
.reindex(columns=['V1','V2','V3','V4','ID']))
print (df)
V1 V2 V3 V4 ID
0 python 0.4 0.5 0.6 1
1 word 0.0 0.0 0.0 1
2 of 0.5 1.2 7.8 1
3 python 0.4 0.5 0.6 2
4 is 0.9 0.1 0.6 2
5 of 0.5 1.2 7.8 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.