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

基于pandas dataframe中的两列值创建一个新的dataframe

广献
2023-03-14

我在python中有一个数据df1,如下所示:

Type Category
a      1
b      2
c      3
d      4

预期产出:

Type
a/1 
b/2
c/3
d/4

实际的数据框架要比这个大得多,因此我无法为新的数据框架键入每个单元格。

如何提取列并输出到另一个分隔了“/”的数据框架? 也许用一些for loop?

共有1个答案

农永宁
2023-03-14

正确的pandas-y方法是使用str.cat

df['Type'] = df.Type.str.cat(others=df.Category.astype(str), sep='/')

others包含要串联的pd.series和要使用的分隔符sep

结果

    Type
0   a/1
1   b/2
2   c/3
3   d/4
%%timeit
df.Type.str.cat(others=df.Category.astype(str), sep='/')
>> 286 µs ± 449 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df['Type']+'/'+df['Category'].astype(str)
>> 348 µs ± 5.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

两种解决方案都给出了相同的结果,但是使用str.cat会快大约20%。

 类似资料:
  • 我想在Pandas数据集中创建一个新列,基于另外两个列的值。 现在,应该如下所示: 有什么帮助吗?

  • 基于dataframe列val_1值,查看其他列col_0-10标签前缀,然后创建另一列Mycl。 数据帧看起来像: 应用逻辑后所需的数据帧: 我是trid,但这不起作用:df['mycol']=df['col'df['val_1']。aType(str)] DDL生成DataFrame: 谢谢!

  • 问题内容: 所以,这是我的数据框 我还有另一个清单: 如果x.Country位于欧洲,我想创建一个新列“ Continent” 问题答案: 或者您可以直接 使用

  • 谈到R编码,我目前有点墨守成规。我一直在尝试使用mutate、seq和rep函数来生成一个新列,该列迭代多个列值和不同的条件,但结果并不正确。下面是我的一些数据片段: 我希望按类型和特征 ID 对 lipidName 进行分组,然后查看类型特征 ID2,而不是不正确的数据表。如果它们具有相同的类型和特征 ID,则将它们计为脂质名称的相同脂质。如果它们具有相同的类型和特征ID2,则将它们计为脂质名称

  • 我有这个原始数据帧: > 可能有多行具有相同的日期时间,如示例所示。 列< code>column中可能不止有两个不同的值,这是一个简化的示例。 所有值都是整数。 我想创建这个新的数据框: 需要采取的行动: > 对于列<code>列<code>中的每个唯一值,创建一个新列,该值作为列的名称。 对于每个唯一的日期时间,创建一个新行。 根据原始列填充值,如果没有值,则使用 NaN。 创建原始数据帧的代

  • 假设我有一个至少有两列col1和col2的数据帧。此外,我还有另一个数据帧,其列名是col1中的值,其索引是col2中的值。 现在我想添加col3,它在col1的索引处和col2的列中给出第二个数据帧的值。结果应该如下所示: 谢谢大家!!

  • 我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 人城市国家国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊” 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州” 我试过了 但是不等

  • 我正在分析腹部CT扫描中不同身体部位的自动脂肪体积测量。在每个患者的扫描中,在连续的椎体水平上进行测量,每个患者有多个单独测量的隔室(皮下和内脏)。先前的研究已经确定内脏/皮下脂肪测量的比率特别重要。 我很难在我的数据集中计算这个比率。在这个示例代码中,每个患者有六个条目。每个条目都与椎骨水平的隔间测量的脂肪体积相关联。 我想做的是创建一个新的测量类型-“vat/sat”-这只是三个椎体水平中每一