【问题标题】:Inputting new column data based of exsisting column data in a CSV file [duplicate]根据CSV文件中的现有列数据输入新的列数据[重复]
【发布时间】:2021-10-17 01:54:15
【问题描述】:

您好,我对 Python 还是很陌生,对编程不太适应。

我的相关数据如下所示:

Specimen Fam_Genus
1 A
2 B
3 F
4 G
5 U
6 A
7 B
8 D

只有大约 4000 个样本。 由于数据较旧,因此该属不符合现代标准,因为其中许多现在是家庭属的下层阶级。

因此,我希望能够创建一个新行,其中基于 Family Genius 数据显示新 Genius。

喜欢:

Specimen Fam_Genus Modern Genus
1 A A
2 B B
3 F C
4 G C
5 U A
6 A A
7 B B
8 D C

我试过了:

df["Modern_Genus"] = ""
data['Modern_Genus'] = np.where(data.Fam_Genus.str.contains("A"), "A")

但我得到了这个错误:ValueError:应该给出 x 和 y 两者或都不给出

从我在网上找到的,这似乎是最好的方法,但正如我所说,我是 python 新手,尤其是 numpy 和 panda。 那么关于我做错了什么有什么想法或建议吗?

【问题讨论】:

    标签: python pandas dataframe numpy csv


    【解决方案1】:

    np.where 语句需要输入在满足您的条件时提供的内容,以及在不满足条件时提供的另一个输入。试试这个:

    data['Modern_Genus'] = np.where(data.Fam_Genus.str.contains("A"), "A", "B")
    

    “B”是data.Fam_Genus不包含“A”时将提供的值。

    【讨论】:

      【解决方案2】:

      您可以将replace 与新映射的字典一起使用:

      df['Modern_Genus'] = df['Fam_Genus'].replace({'F': 'C',
                                                    'G': 'C',
                                                    'U': 'A',
                                                    'D': 'C',
                                                   })
      

      输出:

         Specimen Fam_Genus Modern_Genus
      0         1         A            A
      1         2         B            B
      2         3         F            C
      3         4         G            C
      4         5         U            A
      5         6         A            A
      6         7         B            B
      7         8         D            C
      

      【讨论】:

        猜你喜欢
        • 2018-04-23
        • 2021-04-16
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        • 2019-02-17
        • 2020-11-13
        相关资源
        最近更新 更多