从 Python 中的 .dat 文件 Dataframe 中读取
Reading from a .dat file Dataframe in Python
我有一个 .dat
文件,如下所示....
#| step | Channel| Mode | Duration|Freq.| Amplitude | Phase|
0 1 AWG Pi/2 100 2 1
1 1 SIN^2 100 1 1
2 1 SIN^2 200 0.5 1
3 1 REC 50 100 1 1
100 0 REC Pi/2 150 1 1
我创建了一个数据框,我想从该数据框中读取提取数据,但出现错误
TypeError: expected str, bytes or os.PathLike object, not DataFrame
我的代码在下面,
import pandas as pd
import numpy as np
path = "updated.dat"
datContent = [i.strip().split() for i in open(path).readlines()]
#print(datContent)
column_names = datContent.pop(0)
print(column_names)
df = pd.DataFrame(datContent)
print(df)
extract_column = df.iloc[:,2]
with open (df, 'r') as openfile :
for line in openfile:
for column_search in line:
column_search = df.iloc[:,2]
if "REC" in column_search:
print ("Rec found")
如有任何建议,我们将不胜感激
由于你的post没有任何明确的问题,我只好根据你的代码来猜测。我假设你想要得到的是 在 DataFrame 中找到所有行,其中列 Mode 包含值 REC.
基于此,我准备了一个适用于您的数据的小型独立示例。
在你的情况下,你唯一应该使用的是最后一行。假设您的 DataFrame 已正确创建和填充,您下面的代码 print(df)
可以通过这一行进行交换。
我强烈建议您阅读有关从 DataFrames 中索引和选择数据的官方文档。 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
import pandas as pd
from io import StringIO
data = StringIO("""
no;step;Channel;Mode;Duration;Freq.;Amplitude;Phase
;0;1;AWG;Pi/2;100;2;1
;1;1;SIN^2;;100;1;1
;2;1;SIN^2;;200;0.5;1
;3;1;REC;50;100;1;1
;100;0;REC;Pi/2;150;1;1
""")
df = pd.read_csv(data, sep=";")
df.loc[df.loc[:, 'Mode'] == "REC", :]
我有一个 .dat
文件,如下所示....
#| step | Channel| Mode | Duration|Freq.| Amplitude | Phase|
0 1 AWG Pi/2 100 2 1
1 1 SIN^2 100 1 1
2 1 SIN^2 200 0.5 1
3 1 REC 50 100 1 1
100 0 REC Pi/2 150 1 1
我创建了一个数据框,我想从该数据框中读取提取数据,但出现错误
TypeError: expected str, bytes or os.PathLike object, not DataFrame
我的代码在下面,
import pandas as pd
import numpy as np
path = "updated.dat"
datContent = [i.strip().split() for i in open(path).readlines()]
#print(datContent)
column_names = datContent.pop(0)
print(column_names)
df = pd.DataFrame(datContent)
print(df)
extract_column = df.iloc[:,2]
with open (df, 'r') as openfile :
for line in openfile:
for column_search in line:
column_search = df.iloc[:,2]
if "REC" in column_search:
print ("Rec found")
如有任何建议,我们将不胜感激
由于你的post没有任何明确的问题,我只好根据你的代码来猜测。我假设你想要得到的是 在 DataFrame 中找到所有行,其中列 Mode 包含值 REC.
基于此,我准备了一个适用于您的数据的小型独立示例。
在你的情况下,你唯一应该使用的是最后一行。假设您的 DataFrame 已正确创建和填充,您下面的代码 print(df)
可以通过这一行进行交换。
我强烈建议您阅读有关从 DataFrames 中索引和选择数据的官方文档。 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
import pandas as pd
from io import StringIO
data = StringIO("""
no;step;Channel;Mode;Duration;Freq.;Amplitude;Phase
;0;1;AWG;Pi/2;100;2;1
;1;1;SIN^2;;100;1;1
;2;1;SIN^2;;200;0.5;1
;3;1;REC;50;100;1;1
;100;0;REC;Pi/2;150;1;1
""")
df = pd.read_csv(data, sep=";")
df.loc[df.loc[:, 'Mode'] == "REC", :]