我正在尝试向数据框中添加新列,并在另一列中添加数字列表。在“街道”一栏中,我不仅获得了街道名称,有时还获得了建筑物和公寓的数量。我想添加该列并检查哪些行包含数字以及它们是什么特定数字。
我在数据框中有这样一列:
street_name
===========
Maine 70 , 50
Oak 2/52
Seventh 2
Sixth
现在我的代码是:
street_df=pd.read_csv('street.csv',encoding='windows-1250',error_bad_lines=False,delimiter=';')
street_df['street_rep']=street_df.iloc[:,0].str.replace(',','/')
street_df['street_rep1']=street_df.iloc[:,1].str.replace('/','')
street_df['street_num']=street_df.iloc[:,2].str.extractall('(\d+)').astype(str).unstack().apply(','.join)
现在我的输出是:
TypeError :(“序列项1:预期的str实例,找到了浮点数”,“发生在索引(0,1)上”)
,我想收到这样的一列:
all_numbers:
============
70,50
2,52
2
包含street_name
列中出现的所有数字
答案 0 :(得分:1)
为此使用n = int(input())
l = list()
i = 0
for j in range(1,n+1):
if j == 0:
l.append(j)
elif j % 2 == 0:
l.insert(0, j)
else:
l.append(j)
print(l)
regex
输出:
import pandas as pd
import re
df = pd.DataFrame({'street': ['Maine 70 , 50','Oak 2/52','Seventh 2','Sixth']})
def find_num(x):
j = re.findall(r'[0-9]+', x)
return ",".join(j)
df['all numbers'] = df['street'].apply(find_num)
print(df)
答案 1 :(得分:0)
您可以使用str.find_all
:
In [11]: df.street_address.str.findall('\d+')
Out[11]:
0 [70, 50]
1 [2, 52]
2 [2]
3 []
Name: street_address, dtype: object
,如果需要用逗号分隔的字符串:
In [12]: df.street_address.str.findall('\d+').apply(','.join)
Out[12]:
0 70,50
1 2,52
2 2
3
Name: street_address, dtype: object