我正在尝试使用具有两列的熊猫创建一个空数据框(['originating_number','terminate_number']。创建此新的空数据框后,我的目标是遍历我拥有的另一个数据框如果满足某些条件,则向该新的空数据帧添加一行。不幸的是,我遇到了一个麻烦,要么初始化空数据帧,要么向其添加。这是我当前的代码(其中记录代表我的其他数据帧我正在使用):
verified_frame = pd.DataFrame(columns=['originating_number_2', 'terminating_number_2'])
for index, row in records.iterrows():
originating_number_length = len(str(row['originating_number']))
terminating_number_length = len(str(row['terminating_number']))
if originating_number_length == 10 and terminating_number_length == 10:
temp_df = pd.DataFrame([row['originating_number'],row['terminating_number']])
verified_frame.append(temp_df)
但是,当我在此代码之后(在if块内)设置跟踪时,我可以看到temp_df具有正确的值,但是当我查看authenticated_frame时,这些值尚未添加。
感谢您的帮助!
答案 0 :(得分:2)
我认为您快到了,您只需要将新的verfied_frame
分配给它的附加自我。试试这个:
verified_frame = pd.DataFrame(columns=['originating_number_2', 'terminating_number_2'])
for index, row in records.iterrows():
originating_number_length = len(str(row['originating_number']))
terminating_number_length = len(str(row['terminating_number']))
if originating_number_length == 10 and terminating_number_length == 10:
temp_df = pd.DataFrame([row['originating_number'],row['terminating_number']])
# reassign verfied_frame here
verified_frame = verified_frame.append(temp_df)
以下是支持此https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
的文档答案 1 :(得分:0)
如果您只需要根据条件从原始框架中滤除行,则可以直接执行此操作,而不必遍历每行:
verified_frame = records[(records['originating_number'] == 10) & (records['terminating_number'] == 10)]['originating_number', 'terminating_number']
verified_frame.columns = ['originating_number_2', 'terminating_number_2']
遍历数据帧行不是很有效,应始终将其视为最后一个选择。