데이터 프레임 A['name', 'frequency']
과 'name'의 목록 B가 있습니다. 둘 다 꽤 깁니다. B는 내가 매일 얻는 더 작은 것입니다. DataFrame에 'name'인 B의 요소가 있는지 확인해야합니다. A['name']
그것이 있다면 나는 그것이 B에 나타날 때마다 데이터 프레임에서 그 '이름'의 빈도를 업데이트해야하고 B에 새로운 요소가 있다면 그것을 주파수 1로 DataFrame A의 새 행으로 추가해야합니다. 파이썬 2.7에서 수행하십시오. 고마워요 A는 이렇게 내 mac_list입니다
mac_list.iloc[0:6]
Out[59]:
mac_address frequency
0 20c9d0892feb 2
1 28e34789c4c2 1
2 3480b3d51d5f 1
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1
그리고 B는 이것과 같은 나의 new_mac_list입니다.
['20c9d0892feb' '3480b3d51d5f' '20c9d0892feb' '249cji39fj4g']
mac_list에 대한 출력을 원합니다.
mac_address frequency
0 20c9d0892feb 4
1 28e34789c4c2 1
2 3480b3d51d5f 2
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1
6 249cji39fj4g 1
나는 이것을 시도했다
b = mac_list['mac_address'].isin(new_mac_list)
b=list(b)
for i in range(len(b)):
if b[i]==True:
mac_list['frequency'].iloc[i]+=1
빈도를 업데이트하지만 문제는 new_mac_list에 1 개 이상 표시 되더라도 빈도가 1 씩 증가한다는 것입니다.
그리고 이것을 사용하여 새 요소를 삽입했습니다.
c = new_mac_list.isin(mac_list['mac_address'])
c=list(c)
for i in range(len(c)):
if c[i]==False:
mac_list.append(new_mac_list[i],1)
그러나 그것은 한 번만 비교하면 될 수 있다고 생각하는 매우 비효율적 인 방법입니다.
다음은 초기 데이터 프레임입니다.
mac_list
mac_address frequency
0 20c9d0892feb 2
1 28e34789c4c2 1
2 3480b3d51d5f 1
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1
그리고 새로운 목록 :
new_mac_list = ['20c9d0892feb', '3480b3d51d5f', '20c9d0892feb', '249cji39fj4g']
먼저 mac_list의 인덱스를 mac_address로 설정했습니다.
mac_list = mac_list.set_index("mac_address")
그런 다음 새 목록에서 주파수를 계산합니다.
new_freq = pd.Series(new_mac_list).value_counts()
그런 다음 add
시리즈 에서 방법 을 사용할 수 있습니다 .
res = mac_list["frequency"].add(new_freq, fill_value=0)
20c9d0892feb 4.0
249cji39fj4g 1.0
28e34789c4c2 1.0
3480b3d51d5f 2.0
4480ebb4e28c 1.0
4c60de5dad72 1.0
4ca56dab4550 1.0
dtype: float64
원래 형식으로 돌아 가기 :
mac_list = pd.DataFrame(res, columns = ["frequency"])
print(mac_list)
frequency
20c9d0892feb 4.0
249cji39fj4g 1.0
28e34789c4c2 1.0
3480b3d51d5f 2.0
4480ebb4e28c 1.0
4c60de5dad72 1.0
4ca56dab4550 1.0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다