我的群集中有两个文件,File A并File B带有以下数据 -
档案A.
#Format:
#Food Item | Is_A_Fruit (BOOL)
Orange | Yes
Pineapple | Yes
Cucumber | No
Carrot | No
Mango | Yes
Run Code Online (Sandbox Code Playgroud)
档案B.
#Format:
#Food Item | Vendor Name
Orange | Vendor A
Pineapple | Vendor B
Cucumber | Vendor B
Carrot | Vendor B
Mango | Vendor A
Run Code Online (Sandbox Code Playgroud)
基本上我想知道 每个供应商销售多少水果?
预期产量:
Vendor A | 2
Vendor B | 1
Run Code Online (Sandbox Code Playgroud)
我需要使用hadoop流式传输python map reduce.
我已经阅读了如何做一个基本的单词计数,我读取sys.stdin并k,v为减速器发出对然后减少.
我该如何处理这个问题?
我主要关注的是如何读取多个文件,然后在Hadoop Streaming中进行比较.
我可以在普通的python中做到这一点(即没有MapReduce和Hadoop,它很简单.)但是对于我拥有的庞大数据大小它是不可行的.
这是我的情况 -
In[1]: data
Out[1]:
Item Type
0 Orange Edible, Fruit
1 Banana Edible, Fruit
2 Tomato Edible, Vegetable
3 Laptop Non Edible, Electronic
In[2]: type(data)
Out[2]: pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)
我想要做的只是创建一个数据框Fruits,所以我需要groupby这样的方式Fruit存在于Type.
我试过这样做:
grouped = data.groupby(lambda x: "Fruit" in x, axis=1)
我不知道这是不是这样做,我有点难以理解groupby.我如何才能获得新DataFrame的Fruits?
到目前为止这是我的代码,
import win32com.client as winc
outlook = winc.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message = messages.GetLast()
print message.body
Run Code Online (Sandbox Code Playgroud)
并message.body从outlook打印我的最后一封电子邮件.
当我dir(message)或help(message)属性body没来.为什么?
>>> dir(message)
['_ApplyTypes_', '_FlagAsMethod', '_LazyAddAttr_', '_NewEnum', '_Release_', '__AttrToID__', '__LazyMap__', '__call__', '__doc__', '__eq__', '__getattr__', '__getitem__', '__init__', '__int__', '__len__', '__module__', '__ne__', '__nonzero__', '__repr__', '__setattr__', '__setitem__', '__str__', '_builtMethods_', '_enum_', '_find_dispatch_type_', '_get_good_object_', '_get_good_single_object_', '_lazydata_', '_make_method_', '_mapCachedItems_', '_oleobj_', '_olerepr_', '_print_details_', '_proc_', '_unicode_to_string_', '_username_', '_wrap_dispatch_']
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
更新
无论如何,我可以毫无疑问地了解对象的所有属性吗?
我正在使用这个库XlsxWriter。
我打开了一本工作簿并在其中写了一些东西(考虑到官方示例)-
import xlsxwriter
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()
# Some data we want to write to the worksheet.
expenses = (
['Rent', 1000],
['Gas', 100],
['Food', 300],
['Gym', 50],
)
# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0
# Iterate over the data and write it out row by row.
for item, cost in (expenses):
worksheet.write(row, …Run Code Online (Sandbox Code Playgroud) 当我git clone从回购时,我得到了,
fatal: Could not get current working directory: No such file or directory
我该怎么办?我检查了服务器,发现该.git文件存在.服务器正在运行Gitlab实例.我已经ssh正确配置了密钥,我已经提交和克隆了一段时间而没有任何错误,这种情况突然发生.
FWIW,我正在git clone用bash脚本做.
更新
这是我的bash脚本,
for repo in $repos
do
git clone $repo /tmp/tmpdir/
# do stuff with /tmp/tmpdir/
rm -rf /tmp/tmpdir/
done
Run Code Online (Sandbox Code Playgroud)
对于第一个repo它没关系,但当for进入第二个repo它失败并给出上述fatal错误.
我有一系列操作需要一个接一个地发生,每个操作都依赖于前一个函数的输出.
像这样:
out1 = function1(initial_input)
out2 = function2(out1)
out3 = function3(out2)
out4 = function4(out3)
Run Code Online (Sandbox Code Playgroud)
等约10次.它在代码中看起来有点难看.
写它的最佳方法是什么?有没有办法使用一些函数编程魔术处理它?有没有更好的方法来调用和执行这个功能链?
这是我的情况 -
In[9]: df
Out[9]:
fruit val1 val2
0 Orange 1 1
1 orANGE 2 2
2 apple 3 3
3 APPLE 4 4
4 mango 5 5
5 appLE 6 6
In[10]: type(df)
Out[10]: pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)
如何删除不区分大小写的重复,从而导致fruit将与所有低val1,因为每个的总和val1S和val2为每个总和val2s ^
预期结果:
fruit val1 val2
0 orange 3 3
1 apple 13 13
2 mango 5 5
Run Code Online (Sandbox Code Playgroud) 我有一个CentOS盒子.
(venv)[root@localhost]# yum install MySQL-python
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.maine.edu
* epel: ftp.osuosl.org
* extras: mirror.us.leaseweb.net
* remi: rpms.famillecollet.com
* updates: mirrors.centarra.com
Setting up Install Process
Package MySQL-python-1.2.3-0.3.c1.1.el6.x86_64 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
...
(venv)[root@localhost]# python
Python 2.7.6 (default, May 20 2014, 20:23:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的laaaaaarge文件:
VENDOR|QTY|ITEM|PRICE
2|3|Sugar|15
3|3|Coffee|35
4|244|Sugar2|55
33|2|Pizza|36
3|3|Pizza|55
5|5|Pizza2|33
6|6|Pizza3|44
Run Code Online (Sandbox Code Playgroud)
如何打印VENDOR和PRICE IFF ITEM是Pizza?
我试过grep但它很慢.
我可以像这样写一个python代码,
for line in file:
fields = line.split('|')
if fields[2] == 'Pizza':
print fields[0], fields[-1]
Run Code Online (Sandbox Code Playgroud)
但我想从shell本身在Awk中做到这一点.我该怎么做呢?
更新
我如何检查子串?
我想输出VENDOR,PRICE如果披萨发生ITEM?
输出应该是:
33|36
3|55
5|33
6|44
Run Code Online (Sandbox Code Playgroud) 我需要找到目录中的所有.gz文件而不是 .tar.gz文件,然后发送所有.gz文件some_other_command进行处理.
我到目前为止:
find . -regextype egrep -regex '.*/*\.gz$|[NOT .tar.gz]' -exec some_other_command -- '{}' '+'
some_other_command只需要.gz文件而不 需要.tar.gz.我[NOT .tar.gz]的正则表达式应该是什么?