【问题标题】:Convert the delimited data in a string to values in a single column将字符串中的分隔数据转换为单列中的值
【发布时间】:2016-08-05 09:31:39
【问题描述】:

我有一个这样的数据框:

Var_1
201601_abc
201603_tbc;201608_sdf;201508_dsf
201601_abc;201508_dsf
...

我想要一个包含 Var1 中不同值的列(由“;”分隔的值被认为是不同的

所以最终的数据框会是这样的:

Var_2
201601_abc
201603_tbc
201608_sdf
201508_dsf

【问题讨论】:

  • 你所说的数据框是什么意思(是熊猫吗?)到目前为止你有什么尝试?如果您使用的是嵌套列表,则可以将其展平。

标签: python pandas data-manipulation


【解决方案1】:

IIUC 以下应该可以工作:

In [160]:
df2 = pd.DataFrame(df['Var_1'].str.split(';',expand=True).stack().unique(), columns=['Var_2'])
df2

Out[160]:
        Var_2
0  201601_abc
1  201603_tbc
2  201608_sdf
3  201508_dsf

这会拆分分隔符上的值,然后stacks 并返回unique 值,然后我们可以根据返回的数组构造一个新的df

拆分以上步骤:

In [161]:
df['Var_1'].str.split(';',expand=True)

Out[161]:
            0           1           2
0  201601_abc        None        None
1  201603_tbc  201608_sdf  201508_dsf
2  201601_abc  201508_dsf        None

In [162]:    
df['Var_1'].str.split(';',expand=True).stack()

Out[162]:
0  0    201601_abc
1  0    201603_tbc
   1    201608_sdf
   2    201508_dsf
2  0    201601_abc
   1    201508_dsf
dtype: object

In [163]:
df['Var_1'].str.split(';',expand=True).stack().unique()

Out[163]:
array(['201601_abc', '201603_tbc', '201608_sdf', '201508_dsf'], dtype=object)

【讨论】:

  • 谢谢。这里展开的作用是什么?
  • 它将在自己的列中返回每个拆分,这是必需的,因为 stackDataFrame 方法,而不是 Series 方法
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 2021-06-22
  • 2019-12-10
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
相关资源
最近更新 更多