我有一张excel表,其数据看起来像这样。
Column1 Column2 Column3
1 23 1
1 5 2
1 2 3
1 19 5
2 56 1
2 22 2
3 2 4
3 14 5
4 59 1
5 44 1
5 1 2
5 87 3
我想要做的是将Column1和Column3提取到具有多个值的字典中。像这样:
1: 1,2,3,5
2: 1,2
3: 4,5
4: 1
5: 1,2,3
我是Python的新手,所以我们非常感谢您提供的任何帮助!
我可以从两列中提取数据并将其放入dict中。但是每个键的多个值我不确定。并且还不确定如何将第1列中的所有1,2,3分组到单个条目中。
for rownum in range(sheet.nrows):
results = dict((sheet.cell_value(rownum, 0), sheet.cell_value(rownum, 2)) for rownum in range(sheet.nrows))
return results
编辑:感谢本网站的帮助,这就是我目前所处的位置。
xl = pandas.read_excel(r"e:\py_projects\py_test\test_data.xlsx", sheetname='stockTestColumn1')
grouped = xl.groupby("columnid")
myData = grouped["volumeid"].apply(lambda x: [e for e in x])
我现在希望做的是检查任何给定密钥是否存在x。
所以,如果这是输出:
1: 1,2,3,4,5
2: 1,2
3: 4,5
4: 1
5: 1,2,3
我希望做类似的事情:
check = myData.get('1')
if '4' in check:
print "do something"
答案 0 :(得分:0)
这是pandas groupby的典型用例,
#!/usr/bin/python
import pandas as pd
from StringIO import StringIO
s = """Column1 Column2 Column3
1 23 1
1 5 2
1 2 3
1 19 5
2 56 1
2 22 2
3 2 4
3 14 5
4 59 1
5 44 1
5 1 2
5 87 3
"""
sio = StringIO(s)
df = pd.read_table(sio, sep=r"\s+")
grouped = df.groupby("Column1")
print grouped["Column3"].apply(lambda x: [e for e in x])
输出:
1 [1, 2, 3, 5]
2 [1, 2]
3 [4, 5]
4 [1]
5 [1, 2, 3]
检查迭代器中实际传递的sum
签名apply
。
基本上,pandas是进行这种表格数据处理的正确工具。