如果从@mozway找到一个很好的解决方案,将实体移到列的右边:
Python / Pandas: Shift entities of a row to the right (end)
如果最后一列中有NaN(列数可以变化),我想将所有列右移到数据框的末尾,使其看起来像下面这样:
解决方案运行良好:
x1c 0d1x的数据
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')
)
字符串
但是,现有的解决方案是否有一种方法来实现过滤器,即只移动包含例如Customer中的单词main的行?它应该看起来像这样:Cucumber.main被移动,因为单词main。Strawberry.fruit not,因为缺少main。
期望输出:
1条答案
按热度按时间7cjasjjr1#
您可以使用
Series.str.contains
向DataFrame.mask
添加新条件:字符串
或者使用
MultiIndex
乘以Index.get_level_values
的级别:型