寻找一种泛大陆的方法来转动以下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/