【问题标题】:Change column value based on kV of another column根据另一列的 kV 更改列值
【发布时间】:2022-12-16 23:22:04
【问题描述】:

我有一个数据框,我实际上需要对 A 列中指示的千伏进行比较 (>= 110) 或 (<110)。 然后如果 kv >= 110,将 C 列的值更改为 Transmission。 如果 kc < 110,将 C 列的值更改为 Distribution。 如果没有数字,则默认值为 Distribution。 但前提是 B 列是“sampletext” 我准确地说,比较只能在 kV 上进行,字符串中可以有其他数字,但它们并不重要。

这是数据框的样子(中间还有其他列,所以我需要按名称引用该列)。

A B C
lorem ipsum 400kv sampletext distribution
lorem 400 kV ipsum sampletext distribution
lorem 32 ipsum 109KV loremipsum sampletext distribution
lorem ipsum sampletext generation

这是数据的样子

A B C
lorem ipsum 400kv sampletext transmission
lorem 400 kV ipsum sampletext transmission
lorem 32 ipsum 109KV loremipsum sampletext distribution
lorem ipsum sampletext generation

我试着举一些例子来说明 kv 并不总是以相同的方式和相同的位置编写。 如果我没记错的话,找到千电压的正则表达式就是这个:

(\d+)(\s|.)((?i:kv))

我尝试使用条件、.extract、.contains 甚至 np.select,但我就是找不到如何让它工作。

非常感谢 !

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用:

    s = pd.to_numeric(df['A'].str.extract('(?i)(d+)s*kv', expand=False))
    df.loc[s.lt(100)|s.ge(110), 'C'] = 'transmission'
    

    【讨论】:

      猜你喜欢
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2018-04-15
      • 2012-10-15
      • 1970-01-01
      • 2019-06-19
      相关资源
      最近更新 更多