我需要数据框中的一个新列,其中填充了满足指定条件的列名。本例中为> 1
。
我尝试遍历有问题的列(它是 df.columns
的子集),但没有提供所需的输出。
df = pd.DataFrame([
[1, 0, 2, 2],
[1, 1, 0, 0],
[0, 2, 3, 2],
[2, 2, 1, 1]],
columns=['col1', 'col2', 'col3', 'col4'])
cols = df.columns[:-1]
df['d'] = ''
for col in cols:
df.loc[df[col] > 1, 'd'] = col
当前输出:
out = pd.DataFrame([
[1, 0, 2, 2, 'col3'],
[1, 1, 0, 0, ''],
[0, 2, 3, 2, 'col3'],
[2, 2, 1, 1, 'col2']],
columns=['col1', 'col2', 'col3', 'col4', 'd'])
我需要的是满足该条件的所有列的信息,因此输出如下:
out = pd.DataFrame([
[1, 0, 2, 2, 'col3'],
[1, 1, 0, 0, ''],
[0, 2, 3, 2, 'col2,col3'],
[2, 2, 1, 1, 'col1,col2']],
columns=['col1', 'col2', 'col3', 'col4', 'd'])
如有任何帮助,我们将不胜感激。
最佳答案
df['d'] = (df.iloc[:,:-1] > 1).apply(lambda x: ','.join([col for cond,col in zip(x,df.columns) if cond]), axis=1)
结果:
col1 col2 col3 col4 d
0 1 0 2 2 col3
1 1 1 0 0
2 0 2 3 2 col2,col3
3 2 2 1 1 col1,col2
关于python - 如何使用值满足条件的列名填充 pandas 数据框中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559537/