有条件地将单元格的内容合并到列中

有条件地将单元格的内容合并到列中

寻找一种泛大陆的方法来转动以下df:

    name    desc
0   A       a
1   NaN     aa
2   NaN     aaa
3   B       b
4   NaN     bb

进入:
    name    desc
0   A       a
            aa
            aaa
3   B       b
            bb

# strings in desc are concat-ed together with end of line char

我正在考虑itertuple或backfill+groupby的大致方向,但这两种方法都需要一些技巧。
这是起点:
import pandas as pd
import numpy as np
nan = np.nan

df = pd.DataFrame(
    {'name': ['A', nan, nan, 'B', nan],
    'desc': ['a', 'aa', 'aaa', 'b', 'bb']}
)

最佳答案

我想你需要fillna(method='ffill')groupby的组合。
这看起来怎么样?

import pandas as pd
import numpy as np
nan = np.nan

df = pd.DataFrame(
    {'name': ['A', nan, nan, 'B', nan],
    'desc': ['a', 'aa', 'aaa', 'b', 'bb']}
)

df['name'] = df['name'].fillna(method='ffill')

df = df.groupby('name')['desc'].apply(lambda d: '\n'.join(d)).reset_index()
print df

印刷品
  name        desc
0    A  a\naa\naaa
1    B       b\nbb

关于python - 有条件地将单元格的内容合并到列中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55800911/

10-13 06:50