【问题标题】:Is there a way to use values in a pandas dataframe column to perform a slice of on a string?有没有办法使用熊猫数据框列中的值对字符串执行切片?
【发布时间】:2020-02-22 20:34:36
【问题描述】:

我想用从字符串中提取的切片填充一列。

df['unique'slice']= filler_slice[0:df[some_value']]

我有一个数据框列,其中包含长度为 20:300 个字符的字符串。我想让所有这些字符串的长度相同(300 个字符)。额外的字符将来自定义的字符串。我一直在尝试使用以下设置 300char 列,但它不起作用。我收到错误长度的值与“”索引的长度不匹配。

我的代码如下所示:

filler_string='IAMA300CHARFILLERSTRING'.
df['300_string']=df['smaller_string']+filler_string[0:300-df['smaller_string_len']]

【问题讨论】:

    标签: python pandas slice


    【解决方案1】:

    你试过pandas的@​​987654321@吗?

    df['smaller_string'].str.pad(width=300, side='right', fillchar=your_char)
    

    【讨论】:

    • 我试过了,但我想用不同的字符“填充”,而不是一个字符。例如,根据需要使用通过“ATGCGTAGGTAGAGCAGAG”的字符填充。
    • 那么你必须按照 Venkat 的建议使用 apply 。我认为 columnw 明智的用例没有内置函数。
    【解决方案2】:

    以下 sn-p 可用于实现所述目标。只是模拟你的问题。可以修改代码的某些部分以适合您的代码。为max_len重复填充字符串,以处理所需长度与实际长度之差大于填充字符串长度的情况(如果填充字符串为最大长度,则可以省略)。

    temp = {'string' : ['text1', 'text10', 'text123']}
    df = pd.DataFrame(temp)
    max_len = 300
    filler_string='IAMA300CHARFILLERSTRING'
    filler_string = (filler_string * (max_len // len(filler_string) + 1))[:max_len]
    df['string'] = df['string'].apply(lambda x: "{}{}".format(x, filler_string[0:max_len - len(x)]))
    

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 2021-02-27
      • 2022-11-22
      • 2018-10-04
      • 2015-05-11
      • 2018-08-30
      • 2018-07-30
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多