【发布时间】:2018-03-27 05:52:21
【问题描述】:
前言:我是 Python 新手。
我正在清理一个数据分布在多行中的文件。我正在努力寻找将多个文本字符串连接到单个单元格的解决方案。 .csv 数据与此类似:
名称、日期、描述
邦迪,2017 年 12 月 12 日,好狗
,,闻起来有点怪
,,需要清洗
每个条目之间也有一两行空白。
用于“描述”的行数不一致。有时它只有一个细胞,有时多达四个。理想的输出将这些多行转换为单行有用数据,而不会浪费所有空间。我想也许我可以通过将数据复制到几列,向上移动,然后以某种方式迭代来创建一系列掩码。不过,我还没有找到与我正在尝试做的事情相匹配的解决方案。这是我目前所处的位置:
#Add column f description stuff and shift up a row for concatenation
DogData['Z'] = DogData['Y'].shift(-1)
DogData['AA'] = DogData['Z'].shift(-1)
DogData['AB'] = DogData['AA'].shift(-1)
#create series checks to determine how to concat values properly
YNAs = DogData['Y'].isnull()
ZNAs = DogData['Z'].isnull()
AANAs = DogData['AA'].isnull()
这里的想法基本上是我将遍历列“Y”,检查列“Z”中的同一行是否为 NA 或有值,如果有则连接。如果没有,只需使用“Y”中的值。携带该逻辑,但如果在任何后续列中遇到 NA 则停止。我不知道该怎么做,或者是否有更有效的方法来做到这一点。
我必须做什么才能获得最终结果?我想不出以我希望的方式进行迭代或连接的正确方法。
【问题讨论】:
标签: python python-3.x pandas dataframe