繁体   English   中英

在Pandas Dataframe中添加新列以比较索引

[英]Add new column in Pandas Dataframe comparing indexes

我在熊猫问题上挣扎。 基本上,我想将新列(从文档数据框)添加到更大的数据框(语料库数据框),并且两个数据框具有不同的形状和索引。 因此,我了解到必须映射两个索引,然后将其添加。 我一直在尝试不同的操作(合并,查找...),但找不到解决方案。 这里的例子:

一方面,我有一个通用数据框,其中包含语料库中的所有标记(corpus-dataframe):

|-------|------------------|
| token | mean_freq_corpus |
|-------|------------------|
| de    | 35               |
|-------|------------------|
| el    | 29               |
|-------|------------------|
| la    | 15               |
|-------|------------------|
| en    | 10               |
|-------|------------------|
| se    | 5                |
|-------|------------------|

另一方面,我还有一堆数据框,其中还包含有关每个特定文档(文档数据框)中该令牌的频率的信息。 喜欢:

|-------|------------------|
| token | Doc_1            |
|-------|------------------|
| de    | 20               |
|-------|------------------|
| se    | 10               |
|-------|------------------|


|-------|------------------|
| token | Doc_2            |
|-------|------------------|
| el    | 15               |
|-------|------------------|
| la    | 12               |
|-------|------------------|


|-------|------------------|
| token | Doc_3            |
|-------|------------------|
| de    | 30               |
|-------|------------------|
| el    | 20               |
|-------|------------------|
| la    | 12               |
|-------|------------------|
| en    | 10               |
|-------|------------------|

如您所见,形状是不同的,并且我从中获得信息的令牌也不同,因此我不能不考虑索引就将信息添加到general_frequency表中。 我最后想要的是这样的:

|-------|------------------|-----|-----|-----|
| token | mean_freq_corpus |Doc_1|Doc_2|Doc_3|
|-------|------------------|-----|-----|-----|
| de    | 35               | 20  |  0  | 30  |
|-------|------------------|-----|-----|-----|
| el    | 29               |  0  | 10  | 20  |
|-------|------------------|-----|-----|-----|
| la    | 15               |  0  | 15  | 12  |
|-------|------------------|-----|-----|-----|
| en    | 10               |  0  |  0  | 10  |
|-------|------------------|-----|-----|-----|
| se    | 5                | 10  |  0  | 0   |
|-------|------------------|-----|-----|-----|

我可以遍历不同的文档数据框,然后使用df.at [index,column]将值附加到语料库数据框中,但我想知道是否还有使用map,lambda或类似方法的可能性。

请考虑示例的简化,每个表有数千个,而我有数千个这些文档表。 谢谢!

使用concat为参加所有小DataFrame秒,然后join到第一DataFrame与左连接:

dfs = [df1, df2, df3]
df_all = pd.concat([x.set_index('token') for x in dfs], axis=1).fillna(0).astype(int)
df = df.join(df_all, on='token')
print (df)
  token  mean_freq_corpus  Doc_1  Doc_2  Doc_3
0    de                35     20      0     30
1    el                29      0     15     20
2    la                15      0     12     12
3    en                10      0      0     10
4    se                 5     10      0      0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM