【发布时间】:2017-12-31 20:03:04
【问题描述】:
我有一个这样的 CSV 文件:
Time [s],Channel 0-Analog, Time [s],Reset-Digital, Time [s],Channel 1-Digital, Time [s],Channel 2-Digital, Time [s],Channel 3-Digital
-0.002204166666667, 2048.000000000000000, -0.002204166666667, 1, -0.002204166666667, 0, -0.002204166666667, 1, -0.002204166666667, 1
-0.002204000000000, 2048.000000000000000, -0.001124000000000, 0, -0.001504666666667, 1, -0.001448500000000, 0, -0.000199666666667, 0
-0.002203833333333, 2048.000000000000000, -0.000000000000000, 1, 0.000301666666667, 0, 0.000841666666667, 1, 0.000056333333333, 1
-0.002203666666667, 2048.000000000000000, 0.000550833333333, 0, 0.000932000000000, 1, 0.003178666666667, 0, 0.002361000000000, 0
-0.002203500000000, 2048.000000000000000, 0.003259333333333, 1, 0.002538166666667, 0, 0.005142333333333, 1, 0.004062000000000, 1
-0.002203333333333, 2048.000000000000000, 0.005602833333333, 0, ...
并且希望有一个只有一次“行”的数据框。
这个想法是创建两个数据框并将它们合并为一个,分别对应列 Time [s]。所以我创建了那个序列。
df1 = pd.read_csv('untitled.csv',usecols=[2,3])
df2 = pd.read_csv('untitled.csv',usecols=[4,5])
merged = pd.merge(df1,df2,on=r'Time [s]')
但它没有工作。 KeyError: '时间 [s]'
/**************************************************** ******************************/
我发现 pandas 正在为重复的列添加编号。所以我像这样更改了我的代码。
df1 = pd.read_csv('untitled.csv',usecols=[2,3])
df2 = pd.read_csv('untitled.csv',usecols=[4,5])
df1.columns = df1.columns.str.strip('.123 ')
df2.columns = df2.columns.str.strip('.123 ')
merged =pd.merge(df1,df2,on=r'Time [s]',how='outer')
merged.set_index(r'Time [s]')
但现在我遇到的问题是索引只是针对没有 NaN 的元素进行排序。表示首先是两列都有数字的所有行,然后只有第一列没有 NaN,然后只有第二列没有 NaN。
Reset-Digital Channel 1-Digital
Time [s]
-0.002204 1.0 0.0
-0.001124 0.0 NaN
-0.000000 1.0 NaN
0.000551 0.0 NaN
... ...
-0.001505 NaN 1.0
0.000302 NaN 0.0
0.000932 NaN 1.0
0.002538 NaN 0.0
... ...
我需要这种格式的
Reset-Digital Channel 1-Digital
Time [s]
0.000302 NaN 0.0
0.000551 0.0 NaN
0.000932 NaN 1.0
0.002538 NaN 0.0
-0.000000 1.0 NaN
-0.001124 0.0 NaN
-0.001505 NaN 1.0
-0.002204 1.0 0.0
... ...
【问题讨论】:
-
我建议你问一个新问题,这是一个不同的问题,我不清楚你想要什么。
-
@Peter - 您是否需要 2 个数据帧 - 一个用于
Analog列和时间列,第二个用于数字列和time列? -
@jezrael 没有一帧是好的,我只是对数字信号感兴趣