如果从@mozway找到了一个很好的解决方案,可以将实体移到列的右侧:
Python / Pandas: Shift entities of a row to the right (end)个
如果最后一列中有NaN(列数可能不同),我希望将所有列右移到数据框的末尾,使其如下所示:
该解决方案运行良好:
import numpy as np
import pandas as pd
data = {
'Customer': ['A', 'B', 'C'],
'Date1': [10, 20, 30],
'Date2': [40, 50, np.nan],
'Date3': [np.nan, np.nan, np.nan],
'Date4': [60, np.nan, np.nan]
}
df = pd.DataFrame(data)
out = (df
.set_index('Customer', append=True)
.pipe(lambda d: d.mask(d.iloc[:, -1].isna(),
d.transform(lambda x : sorted(x, key=pd.notnull), axis=1)
)
)
.reset_index('Customer')
)
但是,对于现有的解决方案,有没有办法实现过滤器,只移位包含单词main的行,例如Customer?它应该是这样的:由于单词中的main,Cucumber.main被移位了.草莓.水果不是,因为主菜不见了.