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

将行值添加为数据框中的新列

唐弘和
2023-03-14

我有一个如下的数据帧:

A     B     C
a1    b1    c1
a1    b2    c2
a2    b1    c3
a2    b2    c4

我想将其转换为如下内容:

A     B1   B2     
a1    c1   c2     
a1    c1   c2     
a2    c3   c4     
a2    c3   c4     

B中重复的值是列名称,其值在C列中。我希望它们是数据帧的列

事实上,数据集是通过展平一棵树创建的,其中有更多的列,每个列都是一个内部节点。第一列是根,C是叶

以下是我的一些尝试:

cmd = "b1,b2"
cond = ""
for c in cmd.split(","):
    cond += "|" + f" (df['B'] == '{c}') "
    cols = [c] + cols
    new_col = main_df[main_df['B'] == c]['C']
    df[c] = new_col
df = df[eval(cond)]

然而,它不起作用。

共有1个答案

庞瀚
2023-03-14

尝试:

df.pivot('A',columns='B')

您将只获得两行,但您的四行无论如何都是重复的两行。

    A   C
B       b1  b2
0   a1  c1  c2
1   a2  c3  c4
 类似资料:
  • 问题内容: 我想知道如何在Spark(Pyspark)中实现以下目标 初始数据框: 结果数据框: 我通常使用以下方法设法将新列“追加”到数据框: 但是,我不知道如何为新列实现这种“行移位”,以便新列具有上一行的字段值(如示例中所示)。我也无法在API文档中找到有关如何通过索引访问DF中特定行的任何内容。 任何帮助,将不胜感激。 问题答案: 您可以如下使用窗口功能 但是有一些重要的问题: 如果您需要

  • 问题内容: 我正在使用PySpark,并且有一个带有一堆数字列的Spark数据框。我想添加一列,它是所有其他列的总和。 假设我的数据框具有列“ a”,“ b”和“ c”。我知道我可以这样做: 问题是我不想单独键入每列并添加它们,尤其是当我有很多列时。我希望能够自动执行此操作,或者希望通过指定要添加的列名列表来执行此操作。还有另一种方法吗? 问题答案: 这并不明显。我看不到spark Datafra

  • 我有一个来自excel电子表格的数据框,其中我找到了每个域出现的频率。我想添加域频率计数到它的相应域。 下面是查找频率并尝试将其添加到相应域的代码。 当我从数据帧打印出频率时:

  • 我用的是PySpark,我有一个Spark数据框架,里面有一堆数字列。我想添加一列,它是所有其他列的总和。 假设我的数据帧具有列“a”、“b”和“c”。我知道我能做到: 问题是,我不想单独键入每列并添加它们,尤其是如果我有很多列。我希望能够自动执行此操作,或者通过指定要添加的列名列表来执行此操作。有其他方法吗?

  • 问题内容: 我有一个现有的数据框,我需要添加一个额外的列,每行将包含相同的值。 现有的df: 新的df: 我知道如何追加现有的series / dataframe列。但这是另一种情况,因为我所需要的只是添加“名称”列,并将每一行设置为相同的值,在本例中为“ abc”。 问题答案: 将添加新列并将所有行设置为该值:

  • 假设我有一个数据框 和列名称列表 如何将新列添加到以零为值的数据帧中?