我从pandas函数输出这样的文件.
Series([], name: column, dtype: object)
311 race
317 gender
Name: column, dtype: object
Run Code Online (Sandbox Code Playgroud)
我试图只用第二列得到一个输出,即
race
gender
Run Code Online (Sandbox Code Playgroud)
删除顶行和底行,第一列.我怎么做?
我在文件夹中有多个CSV文件,其值如下:
GroupID.csv是文件名.有这样的多个文件,但值范围在同一XML文件中定义.我正在尝试将它们分组我该怎么做?
更新1:根据BobHaffner的评论,我已经做到了
import pandas as pd
import glob path =r'path/to/files'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_,index_col=None, header=None)
df['file'] = os.path.basename('path/to/files/'+file_)
list_.append(df)
frame = pd.concat(list_)
print frame
Run Code Online (Sandbox Code Playgroud)
得到这样的东西:
我需要根据XML文件中的bin对值进行分组.我真的很感激任何帮助.
我是Java的新手.我正在尝试通过java连接到hive服务器并使用来自https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC的示例代码
import java.sql.SQLException;
public class HiveJdbcClient {
//private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将所有的罐子放在所需的位置并更新了pom文件,但是得到了
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at HiveJdbcClient.main(HiveJdbcClient.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Run Code Online (Sandbox Code Playgroud)
我搜索了一段时间的解决方案,但无法解决它.请让我知道如何解决这个问题.
我有一个像这样的XML文件:
<hierachy>
<att>
<Order>1</Order>
<attval>Data</attval>
<children>
<att>
<Order>1</Order>
<attval>Studyval</attval>
</att>
<att>
<Order>2</Order>
<attval>Site</attval>
</att>
</children>
</att>
<att>
<Order>2</Order>
<attval>Info</attval>
<children>
<att>
<Order>1</Order>
<attval>age</attval>
</att>
<att>
<Order>2</Order>
<attval>gender</attval>
</att>
</children>
</att>
</hierachy>
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其转换为CSV文件,如下所示:
Data,Studyval
Date,Site
Info,age
Info,gender
Run Code Online (Sandbox Code Playgroud)
我的问题是,父名和子名都是相同的 - 'att'和'attval'.我如何告诉Python区分两者并给我输出?
我试过这个:
import xml.etree.cElementTree as ET
tree = ET.parse('input.xml')
rebase = tree.getroot()
list = []
for att in rebase.findall('att'):
name = att.find('attval').text
for each_att in att.findall('attval'):
try:
val = att.find('attval').text
print name, val
except AttributeError:
print name
Run Code Online (Sandbox Code Playgroud)
它打印了两次相同的东西.
我正在尝试将几个csv
文件中的值分组到XML
文件(groups.xml
)中的bin中.我有以下代码在某种程度上工作,但没有给出我期望的:
import os, sys
import glob
import pandas as pd
import xml.etree.cElementTree as ET
def xml_parse():
try:
os.chdir("path/to/files")
filename = [file1 for file1 in glob.glob("*.csv")]
filename = [i.split('.', 1)[0] for i in filename]
#filename = '\n'.join(filename)
os.chdir('..')
output = []
doc = ET.parse("groups.xml").getroot()
for root_ele in doc.findall('Groups'):
tag_ele = root_ele.find('GroupID').text
for name in filename:
if name == tag_ele.lower():
for root_ele1 in root_ele.findall('groupname'):
displayname = root_ele1.find('Name').text
minval = root_ele1.find('min').text
mininc = root_ele1.find('minInc').text
maxvalue = root_ele1.find('max') …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python获取csv列中唯一项的计数.
示例CSV文件(没有标题):
AB,asd
AB,poi
AB,asd
BG,put
BG,asd
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经尝试过了.
import csv
from collections import defaultdict, Counter
input_file = open('Results/1_sample.csv')
csv_reader = csv.reader(input_file, delimiter=',')
data = defaultdict(list)
for row in csv_reader:
data[row[0]].append(row[1])
for k, v in data.items():
print k
print Counter(v)
Run Code Online (Sandbox Code Playgroud)
这提供了以下格式的输出:
AB
Counter({'asd': 2, 'poi': 1})
BG
Counter({'asd': 1, 'put': 1})
Run Code Online (Sandbox Code Playgroud)
但我希望我的输出如下:
AB:2
BG:2
total_unique_count:3 #unique count of column[1], irrespective of the data in column[0]
Run Code Online (Sandbox Code Playgroud) 我有多个巨大的tsv文件,我正在尝试使用pandas进行处理.我想按'col3'和'col5'进行分组.我试过这个:
import pandas as pd
df = pd.read_csv('filename.txt', sep = "\t")
g2 = df.drop_duplicates(['col3', 'col5'])
g3 = g2.groupby(['col3', 'col5']).size().sum(level=0)
print g3
Run Code Online (Sandbox Code Playgroud)
它到目前为止工作正常,打印输出如下:
yes 2
no 2
Run Code Online (Sandbox Code Playgroud)
我希望能够聚合多个文件的输出,即能够同时按所有文件中的这两列进行分组,并打印一个常见输出,其总出现次数为"是"或"否"或者那个属性可能是什么.换句话说,我现在想一次在多个文件上使用groupby.如果文件没有这些列中的一个,则应该跳过该文件并转到下一个文件.