Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Dataframe比较索引中添加新列_Python_Pandas_Dataframe - Fatal编程技术网

Python 在Dataframe比较索引中添加新列

Python 在Dataframe比较索引中添加新列,python,pandas,dataframe,Python,Pandas,Dataframe,我正在努力解决熊猫的一个问题。基本上,我想将一个新列(来自文档数据框架)添加到一个更大的数据框架(语料库数据框架),这两个数据框架具有不同的形状和索引。所以我知道我必须映射这两个的索引,然后添加它。我一直在尝试不同的事情(合并,定位…),但我没有找到解决方案。下面是一个例子: 一方面,我有一个包含语料库中所有标记的通用数据框架(语料库数据框架): 另一方面,我有一堆数据帧,其中还包含关于每个特定文档(文档数据帧)中该标记的频率的信息。比如: 正如您所看到的,这些形状是不同的,我从中获得信息的标记

我正在努力解决熊猫的一个问题。基本上,我想将一个新列(来自文档数据框架)添加到一个更大的数据框架(语料库数据框架),这两个数据框架具有不同的形状和索引。所以我知道我必须映射这两个的索引,然后添加它。我一直在尝试不同的事情(合并,定位…),但我没有找到解决方案。下面是一个例子:

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

另一方面,我有一堆数据帧,其中还包含关于每个特定文档(文档数据帧)中该标记的频率的信息。比如:

正如您所看到的,这些形状是不同的,我从中获得信息的标记也是不同的,因此我不能在不考虑索引的情况下将这些信息添加到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或类似的方法

请考虑到这些示例是简化的,每个表有几千个,我有几千个这样的文档表。谢谢

用于连接所有小的
数据帧
s,然后使用左连接第一个
数据帧

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
谢谢concat axis=“col”是我要找的东西。我得再读一遍范德普拉斯的那一章。完美的再次感谢!
|-------|------------------|-----|-----|-----|
| 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   |
|-------|------------------|-----|-----|-----|
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