Python DataFrame:将唯一组件提取为列
我从彭博社(bloomberg)提取了30年来SP500指数的所有每日股票成分,数据框架中的指数为日期,行成分为股票 现在,我需要将这个数据框转换为日期作为索引,列作为股票,以便再次将其传递给彭博api以检索所有股票的详细信息 下面是我需要做的一个例子: 我目前有:Python DataFrame:将唯一组件提取为列,python,pandas,Python,Pandas,我从彭博社(bloomberg)提取了30年来SP500指数的所有每日股票成分,数据框架中的指数为日期,行成分为股票 现在,我需要将这个数据框转换为日期作为索引,列作为股票,以便再次将其传递给彭博api以检索所有股票的详细信息 下面是我需要做的一个例子: 我目前有: pd.DataFrame([['A','B',np.nan],['A','B','C'],['B','C','D']]) 0 1 2 0 A B NaN 1 A B C 2 B C D 我
pd.DataFrame([['A','B',np.nan],['A','B','C'],['B','C','D']])
0 1 2
0 A B NaN
1 A B C
2 B C D
我希望得到这个:
pd.DataFrame([[True,True,False,False],[True,True,True,False],[False,True,True,True]],columns=['A','B','C','D'])
A B C D
0 True True False False
1 True True True False
2 False True True True
非常感谢您的帮助您可以使用
pd.get\u dummies
:
pd.get_dummies(df.stack()).max(level=0).astype(bool)
输出:
A B C D
0 True True False False
1 True True True False
2 False True True True
如果你事先知道你的股票是什么(在你的例子中是A、B、C、D),你可以这样做:
df = pd.DataFrame([['A','B',np.nan],['A','B','C'],['B','C','D']])
stock_names = ['A', 'B', 'C', 'D']
df_new = pd.DataFrame([[X in df.iloc[i].unique() for i in range(len(df))] for X in stock_names]).transpose()
df_new.columns = stock_names
谢谢在7563x508数据帧上花费一些时间。。。我会让你知道的