我有以下数据集:
d = {
'Company':['A','A','A','A','B','B','B','B','C','C','C','C','D','D','D','D'],
'Individual': [1,2,3,4,1,5,6,7,1,8,9,10,10,11,12,13]
}
现在,我需要在Python中创建“公司”所有元素对的列表,这些元素对应于“个人”中的值。
E.g。对于上面的数据集,上面的输出应如下所示: ((A,B),(A,C),(B,C),(C,D))。前三个元组,因为个人1隶属于A,B和C 和最后一个,个人10隶属于C和D 。
进一步说明 - 如果个体= 1,则上述数据集具有“A”,“B”和“C”值。现在,我想创建这三个值(元组)的所有唯一组合,因此它应该创建一个包含元组(A,B),(A,C)和(B,C)的列表。接下来是个人= 2。这里只有值'A',因此没有元组可以附加到列表中。对于下一个人,每个人只有一个相应的公司,因此没有进一步的配对。唯一需要添加的元组是Individual = 10,因为它的值为'C'和'D' - 因此应该将元组(C,D)添加到列表中。
答案 0 :(得分:4)
一种解决方案是使用<input type="number">
:
pandas
这不是最有效的方法,但它可能很直观。
答案 1 :(得分:1)
试试这个,
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<Headers> _listDataHeader;
private HashMap<Headers, List<FixturesObject>> _listDataChild;
public ExpandableListAdapter(Context context, List<Headers> listDataHeader,
HashMap<Headers, List<FixturesObject>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
Headers headers = (Headers) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView.findViewById(R.id.textHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
ImageView imageView = (ImageView) convertView.findViewById(R.id.image);
lblListHeader.setText(headers.getNameLeague());
imageView.setImageResource(headers.getImageID());
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
FixturesObject fixturesObject =(FixturesObject) getChild(groupPosition,childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView HomeTeamName = (TextView) convertView.findViewById(R.id.home_team_name);
HomeTeamName.setText(fixturesObject.getMatchHometeamName());
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
答案 2 :(得分:1)
以下是您提炼问题的解决方案:
from collections import defaultdict
from itertools import combinations
data = {'Company':['A','A','A','A','B','B','B','B','C','C','C','C','D','D','D','D'],
'Individual': [1,2,3,4,1,5,6,7,1,8,9,10,10,11,12,13]}
d = defaultdict(set)
for i, j in zip(data['Individual'], data['Company']):
d[i].add(j)
res = {k: sorted(map(sorted, combinations(v, 2))) for k, v in d.items()}
# {1: [['A', 'B'], ['A', 'C'], ['B', 'C']],
# 2: [],
# 3: [],
# 4: [],
# 5: [],
# 6: [],
# 7: [],
# 8: [],
# 9: [],
# 10: [['C', 'D']],
# 11: [],
# 12: [],
# 13: []}