假设df的索引为t1、t2、t3,列为A、B、C、D、E,还有一个序列的索引为t1、t2、t3,其值为
t1 [A, B, C]
t2 [D, E]
t3 [B, C, D]
如何创建一个新的 Dataframe ,例如索引t1、t2、t3和列A、B、C、D、E,使 Dataframe 中的每个值取决于列值是否在序列的列表中。
A B C D E
t1 T T T F F
t2 F F F T T
t3 F T T T F
我知道 Dataframe 有apply和transform这样的函数,但这些函数通常应用于 Dataframe 的每个值,而不是列值本身。
2条答案
按热度按时间8ehkhllq1#
您可以将Series和
assign
分解为新列val
,然后将set_index
和unstack
分解为A..E
值列,以将其转换为列标题或者您可以使用
pd.crosstab
执行此操作一个二个一个一个
或使用
Series.str.get_dummies
drkbr07n2#
解决方案
更容易理解的方法。
1.获取原始系列的索引(
index = series_t.index
)1.设置新 Dataframe 的列(
columns = ['A', 'B', 'C', 'D', 'E']
)1.创建一个空 Dataframe (
df = pd.DataFrame(index=index, columns=columns)
)1.使用
for
循环和if
语句设置dataFrame(df
)的每个值代码
产出