我有两个数据帧:df1和df2。df1有列['UserId'、'company'、'deg'],有100个观察值。df2有列['UserId','deg',],有10个观察值。df1和df2中的索引与“userId”完全匹配。
我想用df2中的更新df1。df2中的“UserId”列是df1中“UserId”列的子集……因此,没有任何附加内容。仅基于“userId”(和/或普通索引)。
df1
,'UserId','Company','deg'
6,'john21','ibm','bs'
12,'mary33','cisco','ms'
16,'smith11','intel','none'
20,'lucy55','intel','bs'
33,'tanya32','fb','ms'
39,'ssri44','google','none'
45,'har43','CDs','none'
df2
,'UserId','deg'
16,'smith11','BS'
39,'ssri44','MS'
45,'har43','MS'
现在,我想使用df2中的信息来更新df1。如您所见,索引值和userIds与df1中的完全匹配。
有什么建议吗?
谢谢
您可以首先将替换为
NaN
,然后使用fillna
将df1
中的无
值更新为df2
:
df1.replace({"'none'": np.nan}, inplace=True)
#or omit '', for me works uncomment version
#df1.replace({"none": np.nan}, inplace=True)
print df1.fillna(df2)
'UserId' 'Company' 'deg'
6 'john21' 'ibm' 'bs'
12 'mary33' 'cisco' 'ms'
16 'smith11' 'intel' 'BS'
20 'lucy55' 'intel' 'bs'
33 'tanya32' 'fb' 'ms'
39 'ssri44' 'google' 'MS'
45 'har43' 'CDs' 'MS'
另一个带有
更新的解决方案
:
df1.replace({"'none'": np.nan}, inplace=True)
df1.update(df2)
print df1
'UserId' 'Company' 'deg'
6 'john21' 'ibm' 'bs'
12 'mary33' 'cisco' 'ms'
16 'smith11' 'intel' 'BS'
20 'lucy55' 'intel' 'bs'
33 'tanya32' 'fb' 'ms'
39 'ssri44' 'google' 'MS'
45 'har43' 'CDs' 'MS'
如果要通过
df1
更新df2
,请使用merge
:
print pd.merge(df2,df1,left_index=True,right_index=True,how='left', on=["'UserId'","'deg'"])
'UserId' 'deg' 'Company'
16 'smith11' 'BS' 'intel'
39 'ssri44' 'MS' 'google'
45 'har43' 'MS' 'CDs'
我想更改我的熊猫数据框架中的一个值,我想我误解了索引的工作方式。 我得到输出 我想将df中的值0.665873更改为1。我试过了 但我得到了错误 我试图用示例数据帧复制该问题,但无济于事。 我认为问题在于,当我使用实际数据时,我得到了一系列的输出,但当我使用实践数据时,得到了一个浮点。为什么我得到的是这个系列而不是浮点0.665873?
我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且
我正在尝试制作一个数据帧,以便可以轻松地将其发送到CSV,否则我必须手动执行此过程。。 我希望这是我的最终输出。每个人都有一个月和年的组合,从2014年1月1日开始,一直到2016年1月12日: 到目前为止的代码: 当我尝试循环创建数据帧时,它要么不工作,要么出现索引错误(因为不匹配列表),我不知所措。 我已经做了一点很好的搜索,并找到了以下一些类似的链接,但我不能反向工程的工作,以适应我的情况。
拿着字典: 我如何把这个字典变成一个数据框,其中的值是列?即。我想要一个数据框显示: 这种形式似乎根本得不到! 谢谢 这是一个不同的问题,另一个问题只是问如何将字典的值放入数据帧,我问的是如何获得我概述的特定形式
我试图将pandas数据帧从宽到长,但我找不到一个好方法。有没有建议通过熊猫来实现这一点? 预期结果:
我试图基于同一数据帧的另一行向数据帧添加列。我想查找第一列值等于第5列中的值的行,并将第2、3和4列附加到dataframe,如下所示 我尝试创建另一个表来合并以各种组合,但没有运气。