我希望使用这种类型的DataFrame。但是因为我导入的数据是使用i字母作为复数的虚部,所以python不允许我将它转换为浮点数。
5.0 0.01511+0.0035769i
5.0298 0.015291+0.0075383i
5.0594 0.015655+0.0094534i
5.0874 0.012456+0.011908i
5.1156 0.015332+0.011174i
5.1458 0.015758+0.0095832i
如何在DataFrame的每一行中将i更改为j?
谢谢。
答案 0 :(得分:0)
如果你有这样的字符串:complexStr = "0.015291+0.0075383i"
,你可以这样做:
complexFloat = complex(complexStr[:-1] + 'j')
如果您的数据是这样的字符串:str = "5.0 0.01511+0.0035769i"
,则必须将第一部分分开,如下所示:
number, complexStr = str.split()
complexFloat = complex(complexStr[:-1] + 'j')
>>> complexFloat
>>> (0.015291+0.0075383j)
>>> type(complexFloat)
>>> <type 'complex'>
答案 1 :(得分:0)
我不确定您是如何获取数据帧的,但是如果您从具有合适标题的文本文件中读取它,那么您可以使用转换器功能来排序&#39; j& #39; - &GT; &#39;我&#39;这样你的dtype就可以正确创建:
对于文件test.df
:
a b
5.0 0.01511+0.0035769i
5.0298 0.015291+0.0075383i
5.0594 0.015655+0.0094534i
5.0874 0.012456+0.011908i
5.1156 0.015332+0.011174i
5.1458 0.015758+0.0095832i
代码
import pandas as pd
df = pd.read_table('test.df',delimiter='\s+',
converters={'b': lambda v: complex(str(v.replace('i','j')))}
)
将df
作为:
a b
0 5.0000 (0.01511+0.0035769j)
1 5.0298 (0.015291+0.0075383j)
2 5.0594 (0.015655+0.0094534j)
3 5.0874 (0.012456+0.011908j)
4 5.1156 (0.015332+0.011174j)
5 5.1458 (0.015758+0.0095832j)
列dtypes:
a float64
b complex128