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

如何使用具有相同索引的另一个dataframe对一个dataframe的值进行索引?

季骏祥
2023-03-14
import pandas as pd
import numpy as np

df1 = pd.DataFrame({'a': ['.81', '1.2', '.67', '.78'],
                   'b': ['.2', '-.9', '.7', '.89'],
                   'c': ['.3', '.22', '.4', '.98'],
                   'd': ['.5', '.45', '.34', '.92']},
                   index=[0, 1, 2, 3])
df2 = pd.DataFrame({'a': ['1', '2', '3', '4'],
                   'b': ['9', '7', '6', '5'],
                   'c': ['1', '14', '9', '5'],
                   'd': ['3', '12', '2', '34']},
                   index=[0, 1, 2, 3])
count=0

for i in df1.index:
    d = pd.DataFrame()
    d = df1.iloc[[count]]
    count = count+1
    d = d.T
    d.columns = ['Dates'] 
    try:
        d.sort_values(by=['Dates'], inplace=True)
    except KeyError:
        print(KeyError)
    d.dropna(inplace=True)
    d['Dates'] = d['Dates'][:10]
    print(d)
count = 0
for y in df2.index:
    df = pd.DataFrame()
    df = df2.iloc[[count]]
    count = count+1
    df = df.T
    df.columns = ['Dates'] 
    df.dropna(inplace=True)
    print(df)
     Dates
b    .2
c    .3
d    .5
a   .81
  Dates
b   -.9
c   .22
d   .45
a   1.2
  Dates
d   .34
c    .4
a   .67
b    .7
  Dates
a   .78
b   .89
d   .92
c   .98
   Dates
a     1
b     9
c     1
d     3
  Dates
a     2
b     7
c    14
d    12
  Dates
a     3
b     6
c     9
d     2
  Dates
a     4
b     5
c     5
d    34

共有1个答案

胡光霁
2023-03-14

使用您的示例dataframes,假设DF1通过drop()ping具有index=2的行而变小:

df1.drop(2,inplace=True)

DF1现在将:

     a    b    c    d
0  .81   .2   .3   .5
1  1.2  -.9  .22  .45
3  .78  .89  .98  .92

您可以以任何方式修改索引。然后,要从DF2中选择DF1中存在的行,可以执行以下操作:

df2.loc[df1.index]

给你:

   a  b   c   d
0  1  9   1   3
1  2  7  14  12
3  4  5   5  34

如果只需要一些列,我们假设C&D:

df2.loc[df1.index,['c','d']]

给你:

    c   d
0   1   3
1  14  12
3   5  34
 类似资料:
  • 问题内容: 我正在尝试仅使用来自多索引DataFrame的一个索引来创建新的DataFrame。 理想情况下,我想要这样的事情: 和: 本质上,我想删除除level之外的多索引的所有其他索引。是否有捷径可寻? 问题答案: 一种方法是简单地重新绑定到所需的MultiIndex级别。您可以通过指定要保留的标签名称来做到这一点: 或使用级别的整数值: MultiIndex的所有其他级别将在此处消失。

  • 问题内容: 在Pandas DataFrame中,我可以使用函数将列值与另一列进行匹配。 例如:假设我们有一个DataFrame: 和另一个DataFrame: 我可以使用的功能相匹配的列值对的列值 例如: 产量: PySpark DataFrame中的等效操作是什么? 上面的代码给我一条错误消息: 问题答案: 这种操作在spark中称为“左半联接”:

  • 我讨论这个问题已经有一段时间了,但没有结果。这几乎是一个重复的问题,至少有一个其他的问题在这里,但我不能完全弄清楚如何做,确切地说,我正在寻找从网上相关的答案。 我有一个熊猫数据帧(我们称之为),看起来像: 其中是索引。我想将其转换为类似以下内容: 因此,基本上,每个对应于相同索引的都应该组合到一个列表(或一个集合,或一个元组)中,该列表成为对应索引的。并且,如图所示,在相似的索引行之间是相同的,

  • 我正在使用齐柏林飞艇0.6.2和火花2.0。 我尝试在循环中执行查询,但效果不是很好。 我需要循环一个数据帧的每一行,大约5000行,并执行一个查询,这将在另一个数据帧中增加一个值。 以下是我的尝试: 我试着从两个数据帧中提取一小部分,但仍然很慢。我觉得我做得不对。 知道如何快速更新数据帧吗?

  • 问题内容: 我有两个熊猫DataFrames-在列上有一个简单的Index 。在和上具有MultiIndex 。 在这种情况下,列(1E,1N,1S和2)是流域盆地。 我想做的是将所有浓度除以盆地(列名)和的权重。 我在这里运气不好。当然是行不通的。我没有很多运气堆叠数据帧并加入 当我离开kwarg时,最后两行不会引发错误,但是会返回joined列的结果。如果我在两个堆叠的DataFrame上都放

  • 我有一个问题,在这个例子中简化了。考虑这个熊猫数据帧,df_a: 我想通过将数量相加到一个新的数据框中,并创建一个新的类似于“arange”的索引来对这个数据框进行分组。这应该是我想要的结果: 但是我的努力创建了一个系列(我希望一个数据帧作为结果): 或者基于id列创建新索引: 我还尝试传递index参数,但这也不起作用: 有人对此有一个优雅的解决方案吗?