簡體   English   中英

熊貓:連接數據幀

[英]Pandas: concatenate dataframes

我有2個數據幀

category    count_sec_target
 3D-шутеры  0.09375
 Cериалы    201.90625
 GPS и ГЛОНАСС  0.015625
 Hi-Tech    187.1484375
 Абитуриентам   0.8125
 Авиакомпании   8.40625

category    count_sec_random
 3D-шутеры  0.369565217
 Hi-Tech    70.42391304
 АСУ ТП,  промэлектроника   0.934782609
 Абитуриентам   1.413043478
 Авиакомпании   14.93478261
 Авто   480.3369565

我需要連接並得到

category    count_sec_target    count_sec_random
 3D-шутеры  0.09375    0.369565217
 Cериалы    201.90625   0
 GPS и ГЛОНАСС  0.015625   0
 Hi-Tech    187.1484375   70.42391304
 Абитуриентам   0.8125   1.413043478
 Авиакомпании   8.40625   14.93478261
 АСУ ТП,  промэлектроника   0    0.934782609
 Авто   0     480.3369565

接下來我想在col中划分值(count_sec_target / count_sec_random) * 100%但是當我嘗試連接df時

frames = [df1, df1]
df = pd.concat(frames)
I get 
category  count_sec_random  count_sec_target
 0                        3D-шутеры          0.369565               NaN
 1                          Hi-Tech         70.423913               NaN
 2         АСУ ТП,  промэлектроника          0.934783               NaN
 3                     Абитуриентам          1.413043               NaN
 4                     Авиакомпании         14.934783               NaN

另外我嘗試df = df1.append(df2) BUt我得錯了結果。 我該如何解決這個問題?

df3 = pd.concat([d.set_index('category') for d in frames], axis=1).fillna(0)
df3['ratio'] = df3.count_sec_random / df3.count_sec_target
df3

在此輸入圖像描述


設置參考

import pandas as pd
from StringIO import StringIO

t1 = """category;count_sec_target
3D-шутеры;0.09375
Cериалы;201.90625
GPS и ГЛОНАСС;0.015625
Hi-Tech;187.1484375
Абитуриентам;0.8125
Авиакомпании;8.40625"""

t2 = """category;count_sec_random
3D-шутеры;0.369565217
Hi-Tech;70.42391304
АСУ ТП,  промэлектроника;0.934782609
Абитуриентам;1.413043478
Авиакомпании;14.93478261
Авто;480.3369565"""

df1 = pd.read_csv(StringIO(t1), sep=';')
df2 = pd.read_csv(StringIO(t2), sep=';')

frames = [df1, df2]

合並在這里應該是合適的:

df_1.merge(df_2, on='category', how='outer').fillna(0)

圖片


要獲得除法輸出,只需執行以下操作:

df['division'] = df['count_sec_target'].div(df['count_sec_random'])  * 100

其中: df是合並的DF

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM