【问题标题】:Pandas Preserving data while dropping NaNPandas 在删除 NaN 的同时保留数据
【发布时间】:2017-08-03 14:30:21
【问题描述】:

大家好,所以我有以下数据框:

  WM               WH          WP            LC_REF
0 Tesla        League       Test            DT 17 1C
1 Merc         Fandom       Tundra          DT 17 1C
2 Fellaine      Fark           ''           DT 17 1C
3 SeaWorld        ''           ''           DT 17 1C
4 Rectigy         ''           ''           DT 17 1C
5 Donfae          ''           ''           DT 17 1C

我的代码是这样的:

for num in range(len(df)):
    df = df.groupby('LC_REF',sort=False).agg(lambda x: ','.join(x.astype(str).str.upper()).replace(' ','')).stack().rename_axis(('LC_REF','a')).reset_index(name='vals')

产生这个:

  LC_REF            a            vals
0 DT 17 1C         WM            Tesla,Merc,Fellaine,Seaworld,Rectigy,Donfae
1 DT 17 1C         WH            League, Fandom, Fark,,,
2 DT 17 1C         WP            Test,Tundra,,,,

有什么办法可以去掉末尾多余的逗号吗?在我的代码中的某处,因为它正在分组,我希望它删除空白字符串值,所以它看起来像这样:

  LC_REF            a            vals
0 DT 17 1C         WM            Tesla,Merc,Fellaine,Seaworld,Rectigy,Donfae
1 DT 17 1C         WH            League, Fandom, Fark
2 DT 17 1C         WP            Test,Tundra

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    试试这个:

    df.vals.apply(lambda x: x[:x.find(',,')])
    

    这样你可以找到第一个出现的',,' 并将文本带到',,' 的位置。即使末尾只有 1 个逗号也有效。

    【讨论】:

    • 感谢您的回答!不幸的是,它似乎切断了没有连续逗号的行的最后一个字母,所以第一行变成了 Tesla,Merc,Fellaine,Seaworld,Rectigy,Donfa,有什么提示吗?
    • 试试这个:df.vals.apply(lambda x: x[:x.find(',,')] if x.endswith(',') else x)
    • 漂亮。感谢您的帮助!
    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 2012-06-07
    • 2019-12-03
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    相关资源
    最近更新 更多