小编Mat*_*ttR的帖子

在Hadoop中搜索/查找文件和文件内容

我目前正在使用Hadoop DFS开展项目.

  1. 我注意到Hadoop Shell中没有搜索或查找命令.有没有办法在Hadoop DFS中搜索和查找文件(例如testfile.doc)?

  2. Hadoop是否支持文件内容搜索?如果是这样,怎么办?例如,我有许多存储在HDFS中的Word Doc文件,我想列出哪些文件中包含"计算机科学"字样.

在其他分布式文件系统中呢?文件内容搜索是分布式文件系统的软肋吗?

filesystems distributed hadoop file distributed-computing

16
推荐指数
1
解决办法
5万
查看次数

python os.walk到一定程度

我想构建一个程序,它使用一些基本代码来读取文件夹并告诉我文件夹中有多少文件.我目前是这样做的:

import os

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)
Run Code Online (Sandbox Code Playgroud)

这很有效,直到"main"文件夹中有多个文件夹,因为文件夹/文件管理不佳,它可能会返回一个长的垃圾文件列表.所以我最多只想进入第二级.例:

Main Folder
---file_i_want
---file_i_want
---Sub_Folder
------file_i_want <--*
------file_i want <--*
------Sub_Folder_2
---------file_i_dont_want
---------file_i_dont_want
Run Code Online (Sandbox Code Playgroud)

我知道如何去只有第一层用break,用del dirs[:]取自这篇文章也是这个职位.

import os
import pandas as pd

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)
        del dirs[:] # …
Run Code Online (Sandbox Code Playgroud)

python directory subdirectory python-os

10
推荐指数
2
解决办法
1万
查看次数

'str' 和 'int' 实例之间不支持 '&gt;'

我遇到了错误

'str' 和 'int' 实例之间不支持 '>'

尝试在 Pandas 数据框中打印以下行时

print (survey_df_clean.shape)
print (survey_df_clean[survey_df_clean['text']>30].shape)
Run Code Online (Sandbox Code Playgroud)

我应该尝试将它们转换为 int 吗?在这个语句中这将如何工作?

python dataframe python-3.x pandas

6
推荐指数
2
解决办法
7万
查看次数

Pandas read_sql 数据类型

我必须比较两个数据源,看看所有行中的同一记录是否相同。一个数据源来自 Excel 文件,另一个数据源来自 SQL 表。我尝试DataFrame.equals()像过去一样使用。

然而,该问题是由于讨厌的数据类型问题造成的。尽管数据看起来相同,但数据类型正在excel_df.loc[excel_df['ID'] = 1].equals(sql_df.loc[sql_df['ID'] = 1])返回False。以下是来自 的数据类型的示例pd.read_excel()

COLUMN ID                         int64
ANOTHER Id                      float64
SOME Date                datetime64[ns]
Another Date             datetime64[ns] 
Run Code Online (Sandbox Code Playgroud)

相同的列来自pd.read_sql

COLUMN ID                        float64
ANOTHER Id                       float64
SOME Date                         object
Another Date                      object
Run Code Online (Sandbox Code Playgroud)

我可以尝试使用convertersfrom 的参数pd.read_excel()来匹配 SQL。或者也在做df['Column_Name] = df['Column_Name].astype(dtype_here)但是我正在处理很多专栏。有没有更简单的方法来检查所有列的值?

检查pd.read_sql()没有类似的东西converters,但我正在寻找类似的东西:

df = pd.read_sql("Select * From Foo", con, dtypes = ({Column_name: str,
                                                      Column_name2:int}))
Run Code Online (Sandbox Code Playgroud)

python type-conversion dataframe pandas

6
推荐指数
1
解决办法
1万
查看次数

将格式应用于整行Openpyxl

我有一个我要格式化的Excel文件.第一行(不包括Headers,所以row2)应该是红色和斜体.

Openpyxl文档状态:

如果要将样式应用于整个行和列,则必须自己将样式应用于每个单元格

我个人认为这很臭...这是我的解决方法:

import openpyxl
from openpyxl.styles import NamedStyle
from openpyxl import load_workbook
from openpyxl.styles.colors import RED
from openpyxl.styles import Font
# I normally import a lot of stuff... I'll also take suggestions here.

file = 'MY_PATH'
wb = load_workbook(filename=file)
sheet = wb.get_sheet_by_name('Output')

for row in sheet.iter_rows():
    for cell in row:
        if '2' in cell.coordinate:
            # using str() on cell.coordinate to use it in sheet['Cell_here']
            sheet[str(cell.coordinate)].font = Font(color='00FF0000', italic=True)

 wb.save(filename=file)
Run Code Online (Sandbox Code Playgroud)

第一个缺点是,如果有更多的单元格,例如A24我的循环,则会将格式应用于它.我可以用正则表达式解决这个问题.这是正确的方法吗?

最终 - …

python excel openpyxl

5
推荐指数
1
解决办法
2万
查看次数

使用 Openpyxl 和现有工作簿的 Pandas Excel Writer

我有一段时间前的代码,我将其重新用于新任务。任务是将一个新的 DataFrame 写入一个新的工作表,写入一个现有的 excel 文件。但是有一部分代码我不明白,但它只是使代码“工作”。

在职的:

from openpyxl import load_workbook
import pandas as pd
file = r'YOUR_PATH_TO_EXCEL_HERE'

df1 = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook(file)
writer = pd.ExcelWriter(file, engine='openpyxl')
writer.book = book # <---------------------------- piece i do not understand
df1.to_excel(writer, sheet_name='New', index=None)
writer.save()
Run Code Online (Sandbox Code Playgroud)

的小线writer.book=book让我难住了。如果没有一段代码,Excel文件将删除所有其它片材,除了在使用的片材sheetname=中的参数df1.to_excel

我看着xlsxwriter文档以及openpyxl,但似乎无法弄清楚,为什么这条线给我我预期的输出。有任何想法吗?

编辑:我相信这篇文章是我最初想法的来源。

python excel pandas openpyxl xlsxwriter

5
推荐指数
1
解决办法
1万
查看次数

根据Pandas Dataframe中另一列的内容在一个列上运行操作

我正在尝试转换列'nominal'中对应的值'side'等于'B'的列中的行的负值。我不想丢失任何未转换的行。我在下面尝试过这个但是得到加薪KeyError('%s not in index' % objarr[mask])

df[-df['nominal']].where(df['side']=='B')
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
2
解决办法
696
查看次数

熊猫to_dict()返回"时间戳"

这是令人尴尬的...我正在尝试通过给你们一些我的数据集的小样本来创建一个好的可重复的熊猫示例.我认为这很简单,df.to_dict()但无济于事.

df2 = df1[['DATE_FILLED','DAYS_SUPPLY']].head(5)
df2['DATE_FILLED'] = pd.to_datetime(df2['DATE_FILLED'])
diction = df2.to_dict()
Run Code Online (Sandbox Code Playgroud)

输出:

{'DATE_FILLED': {0: Timestamp('2016-12-28 00:00:00'),
                 1: Timestamp('2016-12-31 00:00:00'), 
                 2: Timestamp('2016-12-20 00:00:00'), 
                 3: Timestamp('2016-12-21 00:00:00'), 
                 4: Timestamp('2016-12-26 00:00:00')}, 
     'DAYS_SUPPLY': {0: 14, 1: 14, 2: 14, 3: 7, 4: 7}}
Run Code Online (Sandbox Code Playgroud)

但是,如果社区要使用文本将其转换为数据框:

import pandas as pd
from datetime import datetime
import time
d= pd.DataFrame({'DATE_FILLED': [Timestamp('2016-12-28 00:00:00'), Timestamp('2016-12-31 00:00:00'), Timestamp('2016-12-20 00:00:00'), Timestamp('2016-12-21 00:00:00'), Timestamp('2016-12-26 00:00:00')], 'DAYS_SUPPLY': [14, 14, 14, 7, 7]})
Run Code Online (Sandbox Code Playgroud)

他们会得到的NameError: name 'Timestamp' is not defined …

python dataframe pandas

4
推荐指数
2
解决办法
2859
查看次数

Pandas Read_Excel日期时间转换器

使用Python 3.6和Pandas 0.19.2:如何读取excel文件并将列直接更改为日期时间read_excel?与此问题类似,关于转换器和dtypes.但我想在某一栏中读到datetime

我想改变这个:

import pandas as pd
import datetime
import numpy as np

file = 'PATH_HERE'

df1 = pd.read_excel(file)

df1['COLUMN'] = pd.to_datetime(df1['COLUMN']) # <--- Line to get rid of
Run Code Online (Sandbox Code Playgroud)

变成这样的东西: df1 = pd.read_excel(file, dtypes= {'COLUMN': datetime})

代码没有错误,但在我的例子中,COLUMN仍然是int64调用后的dtypeprint(df1['COLUMN'].dtype)

我试过用np.datetime64而不是datetime.我也尝试过使用 converters=而不是dtypes=无济于事.这可能是挑剔,但在我的代码中实现将是一个很好的功能.

python datetime pandas

4
推荐指数
1
解决办法
1万
查看次数

根据字典设置 Pandas 值

我想用字典中的值替换数据框的值。用简单的英语来说:如果存在与Column C字典键匹配的值,则替换Column D为字典中与该特定键对应的值。

import pandas as pd
import numpy as np
dfp = pd.DataFrame({'A' : [np.NaN,np.NaN,3,4,5,5,3,1,5,np.NaN], 
                    'B' : [1,0,3,5,0,0,np.NaN,9,0,0], 
                    'C' : ['AA1233445','A9875', 'rmacy','Idaho Rx','Ab123455','TV192837','RX','Ohio Drugs','RX12345','USA Pharma'], 
                    'D' : [123456,123456,1234567,12345678,12345,12345,12345678,123456789,1234567,np.NaN],
                    'E' : ['Assign','Unassign','Assign','Ugly','Appreciate','Undo','Assign','Unicycle','Assign','Unicorn',]})
print(dfp)

z = {'rmacy': 999}
dfp.loc[dfp['C'].isin(z.keys()), 'D' ] = z.values() # <--- code to change

Output: 
     A    B           C            D           E
0  NaN  1.0   AA1233445       123456      Assign
1  NaN  0.0       A9875       123456    Unassign
2  3.0  3.0       rmacy        (999)      Assign #<--- Worked with paranthesis
3 …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas

3
推荐指数
1
解决办法
1266
查看次数