当前位置: 首页 > 知识库问答 >
问题:

从具有条件的不同大小的数据帧中复制数据

罗俭
2023-03-14

我有2个不同大小的数据帧df1-df2(df2比df1有更多的行和列)。

df1
unit  rate  
aa    nan    
cc    nan 

df2
unit  date  rate  type
aa    1     100   x1
bb    2     150   x2
cc    3     200   x3
dd    4     250   x4
  
    

我试图分配的值从df2['率']到df1['率'],在其中df1['单元']==df2['单元']行。

期望的输出是

df1
unit  rate  
aa    100
cc    200    
    

我尝试了不同的方法:

df1['rate'] = df2.loc[(df2['unit'].reset_index(drop=True) == df1['unit']), 'rate']

只能比较相同标记的Series对象

df1['rate'] = df2.loc[(df2['unit'].reset_index(drop=True).str == df1['unit'].str), 'rate']

给我假消息

我认为这来自于这样一个事实,即两个数据帧从一开始就有不同的大小。然而,我不明白为什么它应该阻止它做比较。我不确定如何从这里开始。

共有1个答案

谷梁翰飞
2023-03-14

您可以使用“合并”:

dfm = df1.merge(df2, left_on='unit', right_on='unit')
dfm = dfm.drop(columns=['date','type','rate_x'])
dfm = dfm.rename(columns={"rate_y": "rate"})
print(dfm)


  unit  rate
0   aa   100
1   cc   200
 类似资料:
  • 我需要合并两个不同大小的数据帧。较大的一个()有一列有几个重复的值(),较短的一个()有列,但其值不重复。df2还有一个ID列。我需要在中使用中的ID的新列,根据中的重复值重复。下面的例子可能会让它更清楚。 .

  • 我有两个数据帧: df1-是一个透视表,它包含列和行的总数,两者都具有默认名称“全部”df2-我通过指定值并使用与上面透视表中使用的相同的索引和列名手动创建的df。本表没有总数。 我需要将第一个数据帧乘以第二个数据帧中的值。我希望总数返回NaN,因为总数不存在于第二个表中。 当我执行乘法运算时,我得到以下错误:

  • 我有一个多列的数据表。这些列中的一列当前作为“键”工作(例如< code>keyb)。另一列(假设< code>A)中可能有数据,也可能没有数据。我想提供一个向量,每个键随机采样两行,-如果这个键出现在向量中,其中一行包含< code>A中的数据,而另一行不包含。 MRE: 例如,我可以将<code>数据子集。表基于<code>list_try 我最初的想法(也可能是低效的想法)是尝试链接每个键两

  • 问题内容: 我只是有一个想法可以测试一些东西,并且有效: 输出显然是: 所以我的问题是: 这是好是坏的编码风格? 这有什么好处? 最重要的是,是否可以在声明本身中创建这样的构造? 另外…为什么甚至有可能做? 问题答案: 这是好是坏的编码风格? 像任何东西一样,这取决于情况。在某些情况下, 锯齿状数组 (称为它们)实际上是适当的。 这有什么好处? 好吧,用于将不同长度的数据集存储在一个数组中。例如,

  • 我正在开发一个应用程序,它将生成一些图表,我正在使用chartjs来绘制它们。 我面临的问题是:图表将用动态数据生成。应用程序最多可以生成9个数据集,很少会有相同的大小。当数据集大小不匹配时,如何使图表提前或填充值? 我在stackoverflow甚至在chartjs github页面上看到了一些例子,但它们对我不起作用。 这是我目前所拥有的一个示例:https://jsfidle.net/cam

  • 我尝试使用熊猫生成数据帧,如下所示: 问题是我得到的列顺序是:“y | x | z |区域” 我怎么能得到这个排序"x|y|z|区域"作为指定的变量"my_dic"?我尝试了属性df.columns=['x','y','z','区域'],但没有成功。我用的是python 2.7