我想添加一个名为我有一个名为week5_233C
的panda Dataframe 的新列,我的Python版本是3.19.13。
我编写了一个if语句来向数据集中添加一个新列:Spike
。如果Value [pV]
中的值不等于0,我想在该行中添加1。如果Value [pV]
为0,我想在spike
列中添加0。
数据如下所示:
TimeStamp [µs] Value [pV]
0 1906200 0
1 1906300 0
2 1906400 0
3 1906500 -149012
4 1906600 -149012
我希望它看起来像这样:
TimeStamp [µs] Value [pV] Spike
0 1906200 0 0
1 1906300 0 0
2 1906400 0 0
3 1906500 -149012 1
4 1906600 -149012 1
我试过:
week5_233C.loc[week5_233C[' Value [pV]'] != 0, 'Spike'] = 1
week5_233C.loc[week5_233C[' Value [pV]'] == 0, 'Spike'] = 0
但是列Spike
中的所有行得到相同的值。
我也试过:
week5_233C['Spike'] = week5_233C[' Value [pV]'].apply(lambda x: 0 if x == 0 else 1)
同样,它只添加0或1,但不适用于if
和else
。
TimeStamp [µs] Value [pV] Spike
0 1906200 0 1
1 1906300 0 1
2 1906400 0 1
3 1906500 -149012 1
4 1906600 -149012 1
这样做:
for i in week5_233C[' Value [pV]']:
if i != 0:
week5_233C['Spike'] = 1
elif i == 0:
week5_233C['Spike'] = 0
不执行任何操作:不添加列,不给出错误,并且使Python崩溃。
但是,当我运行这个if语句时,只需要一个print语句:
for i in week5_233C[' Value [pV]']:
if i != 0:
print(1)
elif i == 0:
print(0)
然后它确实打印了我想要的确切值。我想不出如何将这些值保存在新列中。
这一点:
for i in week5_233C[' Value [pV]']:
if i != 0:
week5_233C.concat([1, df.iloc['Spike']])
elif i == 0:
week5_233C.concat([0, df.iloc['Spike']])
给我一个错误:AttributeError: 'DataFrame' object has no attribute 'concat'
如何创建一个新列Spike
,并根据列Value [pV]
中的值将值0和1相加?
2条答案
按热度按时间n3ipq98p1#
我认为你应该检查
Value [pV]
列的数据类型。你可能有字符串,这就是为什么你有相同的值。尝试print(df['Value [pV]'].dtype)
。如果object
尝试转换为astype(float)
或pd.to_numeric(df['Value [pV]'])
。您也可以尝试:
要显示坏行并调试数据名,请使用以下代码:
jdgnovmf2#