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

从列创建的数据帧索引

隗翰海
2023-03-14

我有一个数据框,我正在使用TIA来填充彭博社的数据。当我看着df。索引我看到我打算成为列的数据以多索引的形式呈现给我。df的输出。列是这样的:

索引([u'column1','u'column2'])

我尝试过各种reset_index的迭代,但都无法补救这种情况。

1) TIA管理器如何使数据帧列作为索引读入?

2) 如何正确地将这些列标识为列而不是多索引?

我试图解决的最终问题是,当我尝试将此列添加到df2时,df2中该列的值显示为NaT。如下图所示:

df2['column3'] = df1['column1']

Produces:

df2
column1 column2 column3
1135     32       NaT
1351      43      NaT
35        13      NaT
135       13      NaT

共有1个答案

金子平
2023-03-14

从注释来看,df1df2具有完全不同的索引

In [396]: df1.index
Out[400]: Index(['Jan', 'Feb', 'Mar', 'Apr', 'May'], dtype='object')

In [401]: df2.index
Out[401]: Index(['One', 'Two', 'Three', 'Four', 'Five'], dtype='object')

但我们希望将值从df1分配到df2,以保持顺序。

通常,熊猫操作尝试根据索引(和/或列)标签自动对齐值。在这种情况下,我们希望忽略标签。要做到这一点,请使用

df2['columns3'] = df1['column1'].values

df1['column1']。值是一个NumPy数组。由于没有索引,Pandas只需将数组中的值按顺序分配到df2['columns3']。如果右侧是列表或元组,则赋值的行为方式相同。请注意,这也依赖于len(df1)均衡len(df2)

例如,

import pandas as pd

df1 = pd.DataFrame(
    {"column1": [1135, 1351, 35, 135, 0], "column2": [32, 43, 13, 13, 0]},
    index=[u"Jan", u"Feb", u"Mar", u"Apr", u"May"],
)
df2 = pd.DataFrame(
    {"column1": range(len(df1))}, index=[u"One", u"Two", u"Three", u"Four", u"Five"]
)
df2["columns3"] = df1["column1"].values
print(df2)

产量

       column1  columns3
One          0      1135
Two          1      1351
Three        2        35
Four         3       135
Five         4         0

或者,您可以使两个索引s相同,然后df2[“columns3”]=df1[“column1”]将产生相同的结果(但现在因为索引标签正在对齐):

df1.index = df2.index
df2["columns3"] = df1["column1"]

使索引匹配的另一种方法是在两个数据帧上重置索引:

df1 = df1.reset_index()
df2 = df2.reset_index()
df2["columns3"] = df1["column1"]

reset_index将旧索引移动到默认情况下名为index的列中(如果index.name)。整数(从0开始)被分配为新的索引标签:

In [402]: df1.reset_index()
Out[410]: 
  index  column1  column2
0   Jan     1135       32
1   Feb     1351       43
2   Mar       35       13
3   Apr      135       13
4   May        0        0
 类似资料:
  • 我有两个形状相同的python数据帧,例如: 我想使用df2中的值作为行索引来选择df1中的值,并创建一个形状相等的新数据帧。预期结果: 我已尝试使用.loc,它在单个列中运行良好: 但是我不能同时在所有列上使用. loc或. iloc。我想避免循环来优化性能,因为我正在处理一个大数据帧。有什么想法吗?

  • 我得到了一个具有多个列和行的数据帧df1。简单的例子: 我想创建一个空的数据框df2,然后再添加新的列和计算结果。 此时,我的代码如下所示: …添加两个新列: 有没有更好/更安全/更快的方法?是否可以创建一个空数据帧df2,并且只从df1复制索引?

  • 我需要从不同的字典中创建一个熊猫数据框架,其中键必须作为数据框架内的列名。如果数据帧没有将键列为列,则必须动态创建键,并将其作为新列附加到数据帧。 我希望输入为, 输出应该是,, 循环的第一次迭代将键作为数据框的列名称,如果没有数据框,则创建值作为第一行的数据框。 第二次迭代检查键是否作为列出现在数据帧中,如果已经出现则插入,否则创建列并插入值作为第二行。 我确实不知道如何在python中动态运行

  • 我目前正在尝试创建一个庞大的置换值表。 “loc”内的值是置换的。“loc”中的每个值都来自不同的总体(“pop1”、“pop2”、“pop3”)。到目前为止,我已经能够形成一个庞大的元组列表,它结合了“loc”内的每个重排和“loc”之间的每个重排。 我一直试图将它放入熊猫的数据帧中,但是我在遍历元组列表以放入数据帧时遇到了困难。:( 理想格式: 我的问题是将元组列表放入数据帧中。我需要获得“l

  • 我正在尝试制作一个数据帧,以便可以轻松地将其发送到CSV,否则我必须手动执行此过程。。 我希望这是我的最终输出。每个人都有一个月和年的组合,从2014年1月1日开始,一直到2016年1月12日: 到目前为止的代码: 当我尝试循环创建数据帧时,它要么不工作,要么出现索引错误(因为不匹配列表),我不知所措。 我已经做了一点很好的搜索,并找到了以下一些类似的链接,但我不能反向工程的工作,以适应我的情况。

  • 拿着字典: 我如何把这个字典变成一个数据框,其中的值是列?即。我想要一个数据框显示: 这种形式似乎根本得不到! 谢谢 这是一个不同的问题,另一个问题只是问如何将字典的值放入数据帧,我问的是如何获得我概述的特定形式