使用 pandas 将具有复数值的数据框修改为具有实部和虚部的新多索引数据框
Modify dataframe with complex values into a new multiindexed dataframe with real and imaginary parts using pandas
我有一个包含复数的数据框,如下所示,
>>>df.head()
96 98
1 3.608719+23.596415j 3.782185+22.818022j
2 7.239342+28.990936j 6.801471+26.978671j
3 3.671441+23.73544j 3.842973+22.940337j
4 3.935188+24.191112j 4.063692+23.269834j
5 3.544675+23.561207j 3.852818+22.951067j
我正在尝试从中创建一个新的多索引数据框,如下所示,
96 98
R X R X
1 3.608719 23.596415 3.782185 22.818022
2 7.239342 28.990936 6.801471 26.978671
3 3.671441 23.73544 3.842973 22.940337
4 3.935188 24.191112 4.063692 23.269834
5 3.544675 23.561207 3.852818 22.951067
我曾尝试将它们拆分为真实和虚构的数据帧,然后 merge/concat 它们,但没有成功。
您可以使用:
df = pd.concat([df.apply(lambda x: x.real), df.apply(lambda x: x.imag)],
axis=1,
keys=('R','X')) \
.swaplevel(0,1,1) \
.sort_index(1)
print (df)
96 98
R X R X
1 3.608719 23.596415 3.782185 22.818022
2 7.239342 28.990936 6.801471 26.978671
3 3.671441 23.735440 3.842973 22.940337
4 3.935188 24.191112 4.063692 23.269834
5 3.544675 23.561207 3.852818 22.951067
另一个解决方案:
a = df.values
mux = pd.MultiIndex.from_product([ ['R','X'], df.columns])
df1 = pd.DataFrame(np.concatenate([a.real, a.imag], axis=1), columns=mux)
.swaplevel(0,1,1)
.sort_index(1)
print (df1)
96 98
R X R X
0 3.608719 23.596415 3.782185 22.818022
1 7.239342 28.990936 6.801471 26.978671
2 3.671441 23.735440 3.842973 22.940337
3 3.935188 24.191112 4.063692 23.269834
4 3.544675 23.561207 3.852818 22.951067
我有一个包含复数的数据框,如下所示,
>>>df.head()
96 98
1 3.608719+23.596415j 3.782185+22.818022j
2 7.239342+28.990936j 6.801471+26.978671j
3 3.671441+23.73544j 3.842973+22.940337j
4 3.935188+24.191112j 4.063692+23.269834j
5 3.544675+23.561207j 3.852818+22.951067j
我正在尝试从中创建一个新的多索引数据框,如下所示,
96 98
R X R X
1 3.608719 23.596415 3.782185 22.818022
2 7.239342 28.990936 6.801471 26.978671
3 3.671441 23.73544 3.842973 22.940337
4 3.935188 24.191112 4.063692 23.269834
5 3.544675 23.561207 3.852818 22.951067
我曾尝试将它们拆分为真实和虚构的数据帧,然后 merge/concat 它们,但没有成功。
您可以使用:
df = pd.concat([df.apply(lambda x: x.real), df.apply(lambda x: x.imag)],
axis=1,
keys=('R','X')) \
.swaplevel(0,1,1) \
.sort_index(1)
print (df)
96 98
R X R X
1 3.608719 23.596415 3.782185 22.818022
2 7.239342 28.990936 6.801471 26.978671
3 3.671441 23.735440 3.842973 22.940337
4 3.935188 24.191112 4.063692 23.269834
5 3.544675 23.561207 3.852818 22.951067
另一个解决方案:
a = df.values
mux = pd.MultiIndex.from_product([ ['R','X'], df.columns])
df1 = pd.DataFrame(np.concatenate([a.real, a.imag], axis=1), columns=mux)
.swaplevel(0,1,1)
.sort_index(1)
print (df1)
96 98
R X R X
0 3.608719 23.596415 3.782185 22.818022
1 7.239342 28.990936 6.801471 26.978671
2 3.671441 23.735440 3.842973 22.940337
3 3.935188 24.191112 4.063692 23.269834
4 3.544675 23.561207 3.852818 22.951067