[英]My if/else/elif statement not working or i dont know how to use it
[英]how to use if, elif and else statement in pandas
我有一個包含 6250 行和 275 列的數據集。
假設我有一列:
Time
0.0
0.0
0.0
18:56.5
使用df = pd.read_clipboard(sep=',')
讀取數據
我在嘗試着:
我試了好幾次,都沒有結果。
我試過如下:
t = record['Time'].iloc[0]
t1 = record['Time'].iloc[1]
t2 = record['Time'].iloc[2]
t3 = record['Time'].iloc[3]
if t != 0:
print ('Start_time: ', t)
elif t1 != 0:
print('Start_time: ', t1)
elif t2 != 0:
print('Start_time: ', t2)
else:
print('Start_time: ',t3)
它不顯示任何錯誤,結果只打印t's
值。 它沒有通過條件。
我也試過:
if t <= 0:
print ('Start_time: ', t)
elif t1 <= 0:
print('Start_time: ', t1)
elif t2 <= 0:
print('Start_time: ', t2)
else:
print('Start_time: ',t3)
它指出:
類型錯誤:“str”和“int”的實例之間不支持“<=”
循環 if 語句
如果“if, elif, else conditions”滿足任一條件,則不檢查剩余條件。 所以上面的代碼只顯示了 t 的值作為結果。 您必須檢查每個 if 語句的所有值。
for i in range(4):
t = record['Time'].iloc[i]
t = float(t) # t seems like "str" type, you mentioned type error.
if t != 0:
print("At t{}, start_time : {}".format(i, t))
熊貓情況
record[record['Time'] != 0]
它將顯示您想要的記錄。
看看這是否適合你。 這僅在時間格式有冒號而不是點時才有效。 我已將 18:56.5 更改為 18:56:5(56 之后的冒號而不是點)。
df['Time']= pd.to_datetime(df['Time'], format='%H:%M:%S',errors='coerce').fillna(0)
for index, row in df.iterrows():
if row['Time']!= 0:
print(row['Time'].strftime("%H:%M:%S"))
else:
pass
pandas
使用if
、 elif
和else
!='0.0'
DataFrame
是一個糟糕的主意,因為它效率不高。
DataFrames
使用矢量化操作。 Pandas:基本功能0.0
和13:15.3
不是時間格式object
或str
類型,所以t1 <= 0
將不起作用。pd.to_datetime
也不起作用。df = pd.DataFrame({'Time': ['0.0', '0.0', '0.0', '18:56.5', '0.0', '0.0', '07:45.4'],
'Time2': ['0.0', '13:15.3', '0.0', '17:03.0', '0.0', '0.0', '07:45.4']})
DataFrames
dict
:DataFrame
添加到df_dict
。 keys
是來自df
的column
名, values
是一切!= '0.0'
。df_dict = dict()
for x in df.columns:
df_dict[x] = df[x][df[x] != '0.0'] # .reset_index(drop=True) can be added here
df_dict
輸出:df_dict['Time']
3 18:56.5
6 07:45.4
Name: Time, dtype: object
df_dict['Time2']
1 13:15.3
3 17:03.0
6 07:45.4
Name: Time2, dtype: object
DataFrame
:df_all = pd.concat([v for _, v in df_dict.items()], axis=1)
.reset_index(drop=True)
將解決索引號問題df_all
的末尾將有NaN
值填充列的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.