【发布时间】:2017-08-09 12:07:15
【问题描述】:
我有以下数据框:
import pandas as pd
df = pd.DataFrame({'Q10: HEDGE FUND':['NO', 'YES', 'NO'],
'Q10: PRIVATE EQUITY FUND': ['NO', 'YES', 'YES'],
'Q10: REAL ESTATE FUND': ['YES', 'NO', 'NO']}).T
0 1 2
Q10: HEDGE FUND NO YES NO
Q10: PRIVATE EQUITY FUND NO YES YES
Q10: REAL ESTATE FUND YES NO NO
我想要什么:
0 1 2
Q10 REAL ESTATE FUND N/A PRIVATE EQUITY FUND
也就是说,我想把Q10的三行合并为1,列出基金的类型。
每一列对应一种基金。第 0 列是房地产基金(请注意 Q10:REAL ESTATE FUND 行中有一个是)。第 2 列是私募股权基金(请注意 Q10:私募股权行中有一个是)。但是,第 1 列的列表有两个“是”,这是数据框中的错误。我需要将其更改为 N/A。
我试过的:对于每一列,我可以在每一列中找到“是”的位置,但我不知道如何处理第 1 列(有两个是,所以应该改为 N/A ) 而且我觉得有一种更无缝的方式来做到这一点:
df[0].tolist().index('YES')
2
【问题讨论】:
-
我不清楚你的列是什么意思,你想要的输出是什么
-
我添加了更多解释,希望对您有所帮助。每列是一个不同的“基金”,行告诉它是哪种类型的基金(第 1 列除外,它是数据框中的错误)。我想将此从 3 YES/NO 行更改为列出基金类型的 1 行
-
那么如果一列中有多个YES,基本上都需要改成NO?然后看看哪些列是yes?
-
不,如果一列中有多个是,这是一个错误,因此新数据框中的行需要读取 N/A,就像我给出的示例中一样(请参阅我想要的:)