I am having a dataframe named df which is having two columns,
JavaScript
x
7
1
Company name Company website
2
0 Maersk Drilling http://www.maerskdrilling.com/
3
1 CICLAGUA SA https://simetriagrupo.com/
4
2 Enel http://www.enel.com/
5
3 Enovos Luxembourg http://www.enovos.lu/
6
4 DTEK http://www.dtek.com/
7
Now what i am trying to implement is I am trying to find out company name where “gc” word exists and store it into new dataframe df1.
JavaScript
1
8
1
for i in range(0,a):
2
if 'gc' in df['Company name'][i]:
3
df1["Company Name"]= df['Company name'][i]
4
df1["URL"]=df['Company website'][i]
5
else:
6
pass
7
8
but this code is showing error
JavaScript
1
8
1
1 for i in range(0,a):
2
----> 2 if 'word' in df['Company name'][i]:
3
3 df1["Company Name"]= df['Company name'][i]
4
4 df1["URL"]=df['Company website'][i]
5
5 else:
6
7
TypeError: argument of type 'float' is not iterable
8
Advertisement
Answer
The error you’re getting is because df[‘Company name’] is not iterable, you cannot index it. What you can do is:
JavaScript
1
13
13
1
df = pd.DataFrame(np.array([["name 1 gc", "gc blalkdd"], ["name 2", "asdfsa3"], ["name 3 gc", "agsd gc asd"]]),
2
columns=['Company name', 'Company website'])
3
4
df_new = pd.DataFrame(columns=['Company name', 'Company website'])
5
6
for i in range(len(df)):
7
row = df.iloc[i]
8
if 'gc' in row['Company name']:
9
to_append_s = pd.Series(row.values.tolist(), index = df.columns)
10
df_new = df_new.append(to_append_s, ignore_index=True)
11
else:
12
pass
13
Here you loop over your dataframe df
, check whether column Company name contains ‘gc’, and if so: append to new_df
. Result:
JavaScript
1
4
1
Company name Company website
2
0 name 1 gc gc blalkdd
3
1 name 3 gc agsd gc asd
4