我想广播或扩展一个 Dataframe 列从一个较小的集合索引到一个较大的集合索引基于Map规范。我有以下的例子,请接受小错误,因为这是未经测试的
import pandas as pd
# my broadcasting mapper spec
mapper = pd.Series(data=['a', 'b', 'c'], index=[1, 2, 2])
# my data
df = pd.DataFrame(data={1: [3, 4], 2: [5, 6]})
print(df)
# 1 2
# --------
# 0 3 5
# 1 4 6
# and I would like to get
df2 = ...
print(df2)
# a b c
# -----------
# 0 3 5 5
# 1 4 6 6
简单地Map列将不起作用,因为存在重复项,我希望扩展为mapper中定义的新值:
# this will of course not work => raises InvalidIndexError
df.columns = df.columns.as_series().map(mapper)
一个天真的方法只是重复规范...
df2 = pd.DataFrame(index=df.index)
for i, v in df.iteritems():
df2[v] = df[i]
2条答案
按热度按时间fruv7luv1#
使用
reindex
和set_axis
:输出:
z18hc3ub2#
您可以使用pd.concat + df.get: