【问题标题】:How to remove leading spaces from strings in a dataseries/list?如何从数据序列/列表中的字符串中删除前导空格?
【发布时间】:2020-08-21 14:37:31
【问题描述】:

我正在通过网络进行网络分析,并注意到一些节点被区别对待只是因为它们有额外的空格(前导)。

我尝试使用以下代码删除空格,但似乎无法使输出再次变为字符串。

rhedge = pd.read_csv(r"final.edge.csv")
rhedge

_________________
 source | to
 niala  | Sana, Sana
 Wacko  | Ana, Aisa

rhedge['to'][1]
'Sana, Sana'

rhedge['splitted_users2'] = rhedge['to'].apply(lambda x:x.split(','))

#I need to split them so they will be included as different nodes

问题出在下一个代码

rhedge['splitted_users2'][1]
['Sana', ' Sana']

如您所见,第二个 Sana 有一个前导空格。

我尝试过这样做:

split_users = []

for i in split:
    row = [x.strip() for x in i]
    split_users.append(row)

pd.Series(split_users)

但是当我再次尝试用“,”分割它们时,它不会允许我,因为数据集现在是列表。我相信拆分它们会使网络将它们视为一个节点,而不是为具有前导空格的一个节点创建一个不同的节点。

谢谢你

【问题讨论】:

    标签: string pandas list dataframe split


    【解决方案1】:

    更改lambda 表达式

    import pandas pd
    
    # dataframe creation
    df = pd.DataFrame({'source': ['niala', 'Wacko'], 'to': ['Sana, Sana', 'Ana, Aisa']})
    
    # split and strip with a list comprehension
    df['splitted_users2'] = df['to'].apply(lambda x:[y.strip() for y in x.split(',')])
    
    print(df['splitted_users2'][0])
    
    >>> ['Sana', 'Sana']
    

    或者

    选项 1

    • 拆分', ' 而不是','
    df['to'] = df['to'].str.split(', ')
    

    选项 2

    • ' ' 替换为'',然后在',' 上拆分
    • 这样做的好处是可以删除任一名称周围的任何空格(例如 [' Sana, Sana', ' Ana, Aisa']
    df['to'] = df['to'].str.replace(' ', '').str.split(',')
    

    【讨论】:

      猜你喜欢
      • 2011-07-25
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多