如何正确地从不同的列中提取数据?

2024-03-28 12:58:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从一些列中提取数据并将其合并到新列中。我有一个数据帧:

col1 col2 col3 col4 
 A    No   No   No
 A    No   No   No
 A    No   No   No
 No   No   No   D
 No   B    No   No
 No   No   C    No
 No   No   C    No

我想得到一个新的专栏,比如:

col1 col2 col3 col4 targetCol
 A    No   No   No     A
 A    No   No   No     A
 A    No   No   No     A
 No   No   No   D      D
 No   B    No   No     B
 No   No   C    No     C
 No   No   C    No     C

我试着使用lambda和simple condition,但它不起作用。一些不起作用的代码:

df['targetCol'] = df['A'] if df_razm['A'] != 'No' else None

错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

谢谢你的建议。你知道吗


Tags: 数据lambdano代码dfifconditionsimple
3条回答

您可以使用justify

df=df.assign(target=justify(df.values,invalid_val='No')[:,0])

  col1 col2 col3 col4 target
0    A   No   No   No      A
1    A   No   No   No      A
2    A   No   No   No      A
3   No   No   No    D      D
4   No    B   No   No      B
5   No   No    C   No      C
6   No   No    C   No      C

axis=1上使用replacemax

df['targetCol'] = df.replace('No', '').max(axis=1)

  col1 col2 col3 col4 targetCol
0    A   No   No   No         A
1    A   No   No   No         A
2    A   No   No   No         A
3   No   No   No    D         D
4   No    B   No   No         B
5   No   No    C   No         C
6   No   No    C   No         C

这里有一种使用^{}的方法:

df['targetCol'] = df.values[df.index, df.ne('No').values.argmax(1)]

   col1 col2 col3 col4 targetCol
0    A   No   No   No         A
1    A   No   No   No         A
2    A   No   No   No         A
3   No   No   No    D         D
4   No    B   No   No         B
5   No   No    C   No         C
6   No   No    C   No         C

相关问题 更多 >