2017-12-18 79 views
-4

創建數據幀我有表像下面 (在這個例子中,它代表的名單,但這不需要是給出列表)如何在python

age=[3,4,5,6] 

sex=[1,2] 

limit=[3,4] 

我想創建數據幀,其有各種組合。

但「限制」列超過「年齡」列。

所以我期望的結果是這樣的。

age sex limit 
3 1 3 
3 1 4 
4 1 4 
3 2 3 
3 2 4 
4 2 4 

我該如何得到這個結果?

+0

OK,你嘗試過這麼遠嗎? –

+0

你可以用一些編程來得到這個結果。你有沒有嘗試過? – Julien

+0

提示:用於... for .. if ..等向我們展示你的嘗試。 – rnso

回答

1

此解決方案使用Numpy和Pandas使用'limit'大於或等於'age'的約束創建組合的數據框。請注意,您的帖子中寫道:「大於」,但你的輸出的例子顯示了「大於或等於」:

import itertools 
age=[3,4,5,6] 
sex=[1,2] 
limit=[3,4] 
a = [age, sex, limit] 
mylist = list(itertools.product(*a)) 

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.array(mylist).reshape(len(mylist),3), columns = ["age","sex","limit"]) 

df2 = df[df['limit'] >= df['age']] 
print df2.to_string(index=False) 

輸出是:

age sex limit 
    3 1  3 
    3 1  4 
    3 2  3 
    3 2  4 
    4 1  4 
    4 2  4   
0

基本數據:

age=[3,4,5,6] 
sex=[1,2] 
limit=[3,4] 

使用列表理解結合forif的下列代碼檢查每個組合:

lst = [(a, s, l) 
     for a in age 
     for l in limit 
     if l >= a 
     for s in sex] 
df = pd.DataFrame(data=lst, columns=["age","sex","limit"]) 
print(df) 

輸出:

age sex limit 
0 3 1  3 
1 3 1  4 
2 3 2  3 
3 3 2  4 
4 4 1  4 
5 4 2  4