我有以下DataFrame:
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:房地产基金行中是“是”)。第2栏是私募股权基金(请注意Q10:PRIVATE EQUITY行中的“是”)。但是,列1有两个YES,这是数据帧中的错误。我需要将其更改为N / A.
我尝试过的内容:对于每一栏,我都可以找到“是”的位置。在每一栏中,但我不知道如何处理第1列(有两个因素,因此应该更改为N / A),我觉得这样做的方式更加无缝:
df[0].tolist().index('YES')
2
答案 0 :(得分:0)
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
df2 = pd.DataFrame(index = ["Q10"], columns = [0,1,2])
df = df.transpose()
Row = []
for col in df.columns:
if df[col].value_counts()["YES"]==1:
Row.append(col[5:])
else:
Row.append("N/A")
df2.loc["Q10"] = Row