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