我有以下numpy数组:
a = np.array([1,2,3]) b = np.array([2,3,4]) c = np.array([1,2,4])
字符串我希望有一个panda dataframe,这三个数组作为列以如下方式排列:| B栏|色谱柱C| Column C || --|--| ------------ || 南|1| 1 || 二个|二个| 2 || 三个|南| Nan || 四|四| 4 |你能告诉我一个有效的方法吗?谢谢你,谢谢
3duebb1j1#
将数组转换为具有部分重叠索引的pandas系列,然后将所有系列沿着axis=1
pd.concat([pd.Series(x, index=x) for x in (a, b, c)], axis=1)
个字符
1dkrff032#
将数组转换为系列,并将其自身作为索引,以受益于索引对齐,以及concat:
concat
dic = {'A': a, 'B': b, 'C': c} df = pd.concat({k: pd.Series(x, index=x) for k, x in dic.items()}, axis=1)
字符串输出量:
A B C 1 1.0 NaN 1.0 2 2.0 2.0 2.0 3 3.0 3.0 NaN 4 NaN 4.0 4.0
型
nkkqxpd93#
另一种可能的解决方案,使用numpy broadcasting:
numpy broadcasting
v = np.arange(np.min([a, b, c]), np.max([a, b, c])+1) m = (v == np.stack([a[:, None], b[:, None], c[:, None]])).any(axis=1) df = pd.DataFrame(np.tile(v[:, None], 3), columns=list('abc')) df.where(m.T)
a b c 0 1.0 NaN 1.0 1 2.0 2.0 2.0 2 3.0 3.0 NaN 3 NaN 4.0 4.0
3条答案
按热度按时间3duebb1j1#
将数组转换为具有部分重叠索引的pandas系列,然后将所有系列沿着axis=1
个字符
1dkrff032#
将数组转换为系列,并将其自身作为索引,以受益于索引对齐,以及
concat
:字符串
输出量:
型
nkkqxpd93#
另一种可能的解决方案,使用
numpy broadcasting
:字符串
输出量:
型