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

如何将dataframe字符串列拆分为两列?

松英喆
2023-03-14
          row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

我不知道如何使用df.row.str[:]来实现拆分行单元格的目标。我可以使用df['fips']=hello添加一个新列,并用hello填充它。有什么想法吗?

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA 
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

共有1个答案

章昆琦
2023-03-14

对于以下的简单情况:

  • 我有一个带有分隔符的文本列,我想要两列

最简单的解决方案是:

df[['A', 'B']] = df['AB'].str.split(' ', 1, expand=True)
>>> import pandas as pd
>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2']})
>>> df

      AB
0  A1-B1
1  A2-B2
>>> df['AB_split'] = df['AB'].str.split('-')
>>> df

      AB  AB_split
0  A1-B1  [A1, B1]
1  A2-B2  [A2, B2]

但你是如何从:

  • 包含两个元素列表的列

致:

    null
>>> upper_lower_df = pd.DataFrame({"U": ["A", "B", "C"]})
>>> upper_lower_df

   U
0  A
1  B
2  C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower()
>>> upper_lower_df

   U  L
0  A  a
1  B  b
2  C  c
>>> df['AB'].str[0]

0    A
1    A
Name: AB, dtype: object

>>> df['AB'].str[1]

0    1
1    2
Name: AB, dtype: object
>>> df['AB'].str.split('-', 1).str[0]

0    A1
1    A2
Name: AB, dtype: object

>>> df['AB'].str.split('-', 1).str[1]

0    B1
1    B2
Name: AB, dtype: object
>>> df['A'], df['B'] = df['AB'].str.split('-', 1).str
>>> df

      AB  AB_split   A   B
0  A1-B1  [A1, B1]  A1  B1
1  A2-B2  [A2, B2]  A2  B2

当然,从拆分字符串列中获取DataFrame非常有用,.str.split()方法可以通过expand=true参数为您完成:

>>> df['AB'].str.split('-', 1, expand=True)

    0   1
0  A1  B1
1  A2  B2

所以,另一种实现我们想要的方法是:

>>> df = df[['AB']]
>>> df

      AB
0  A1-B1
1  A2-B2

>>> df.join(df['AB'].str.split('-', 1, expand=True).rename(columns={0:'A', 1:'B'}))

      AB   A   B
0  A1-B1  A1  B1
1  A2-B2  A2  B2

expand=true版本虽然较长,但与元组解包方法相比具有明显的优势。元组解包不能很好地处理不同长度的拆分:

>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2', 'A3-B3-C3']})
>>> df
         AB
0     A1-B1
1     A2-B2
2  A3-B3-C3
>>> df['A'], df['B'], df['C'] = df['AB'].str.split('-')
Traceback (most recent call last):
  [...]    
ValueError: Length of values does not match length of index
>>> 
>>> df.join(
...     df['AB'].str.split('-', expand=True).rename(
...         columns={0:'A', 1:'B', 2:'C'}
...     )
... )
         AB   A   B     C
0     A1-B1  A1  B1  None
1     A2-B2  A2  B2  None
2  A3-B3-C3  A3  B3    C3
 类似资料:
  • 理想情况下,我希望这些新列也被命名。

  • 问题内容: 我希望我的Python函数拆分一个句子(输入)并将每个单词存储在列表中。我当前的代码拆分了句子,但没有将单词存储为列表。我怎么做? 问题答案: 这应该足以将每个单词存储在列表中。 words已经是句子中单词的列表,因此不需要循环。 其次,这可能是拼写错误,但是你的循环有些混乱。如果你确实确实想使用附加,它将是: 不

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 问题内容: 我有这串 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来分隔它们。 问题答案:

  • 本文向大家介绍如何在R中将字符串列拆分为多列?,包括了如何在R中将字符串列拆分为多列?的使用技巧和注意事项,需要的朋友参考一下 这可以在tidyr软件包的帮助下完成。 示例

  • 我正在开发android应用程序。我正在从图库中获取图像。此外,我正在从gallery获取图像路径。现在我的要求是,我只想获得具有扩展名的图像名称。我该怎么做?请帮帮我。 图像扩展名可以是任何或。我最终需要获得带有扩展名的图像名称。 即我想拆分上面的字符串,只得到。 我如何才能做到这一点?请在这方面帮助我。