首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从应用操作到熊猫数据的合并对象

从应用操作到熊猫数据的合并对象
EN

Stack Overflow用户
提问于 2016-04-11 23:37:09
回答 2查看 60关注 0票数 1

我有一个来自应用程序操作的对象,我想将它与一个dataframe合并。我的理解是,来自apply操作的对象不是dataframe,因此不可能使用合并操作。一种方法是将数据转换为数据,但我不知道如何实现。

例如,我使用了以下代码来获取数据df1的第一个有效索引:

代码语言:javascript
复制
p1 = df1.apply(lambda series: series.first_valid_index())

因此,我得到了以下信息:

代码语言:javascript
复制
AAA   5
BBB   6
CCC   3

我想将它与dataframe df2合并:

代码语言:javascript
复制
       val1   val2
Index
  AAA    12     qw   
  BBB    6      te   
  CCC    31     gb

这样我就能得到以下信息:

代码语言:javascript
复制
       val1   val2  val3
Index
  AAA    12     qw    5
  BBB    6      te    6
  CCC    31     gb    3

当我尝试输入(Df1)时,我得到以下内容

代码语言:javascript
复制
   <class 'pandas.core.series.Series'>

我怎么才能做合并操作?谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 23:42:03

索引上的联接对齐。

代码语言:javascript
复制
p1.name = 'val3'
>>> df2.join(p1)
     val1 val2  val3
AAA    12   qw     5
BBB     6   te     6
CCC    31   gb     3
票数 1
EN

Stack Overflow用户

发布于 2016-04-12 00:26:18

我不认为您应该使用merge来组合两个dataframe,以满足您所描述的特定需求。我最好建议使用合并函数或加入方法;例如,用法参考下面的文档

为了解决您的问题,我编写了一段代码。如果它是一个熊猫系列对象,您应该能够通过指定一个新列将它添加到您的dataframe。

代码语言:javascript
复制
import pandas as pd

# Making some definitions
ind = ["AAA", "BBB", "CCC"]
cols = ["val1","val2","val3"]
val1 = pd.Series(index=ind, data=[21,22,23])
val2 = pd.Series(index=ind, data=["qw","te","gb"])
val3 = pd.Series(index=ind, data=[1,2,3])
ser = [val1,val2,val3]

# Defining a dataframe using the defined series objects
df1 = pd.DataFrame(index=ind, data={cols[i]:ser[i] for i in range(3)})
df2 = pd.DataFrame(index=ind, data={cols[i]:ser[i] for i in range(2)})

# Making a dataframe from first two series objects and adding
# third column
df22 = df2.copy()
print("Test1, Before:")
print(df2)
df22["val3"] = val3
print("Test1, After:")
print(df22)

# Same thing done using join
dfj = df2.copy()
val3.name = "val3" #need name for join
dfj = dfj.join(val3)
print("Test2, After:")
print(dfj)

# same thing done using concat
dfc = df2.copy()
dfc = pd.concat([dfc,val3],axis=1)
print("Test3, After:")
print(dfc)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36561110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档