如何在python
问题描述:
创建数据帧我有表像下面 (在这个例子中,它代表的名单,但这不需要是给出列表)如何在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
我该如何得到这个结果?
答
此解决方案使用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
答
基本数据:
age=[3,4,5,6]
sex=[1,2]
limit=[3,4]
使用列表理解结合for
和if
的下列代码检查每个组合:
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
OK,你尝试过这么远吗? –
你可以用一些编程来得到这个结果。你有没有尝试过? – Julien
提示:用于... for .. if ..等向我们展示你的尝试。 – rnso