我刚刚得到一个 csv 文件,我想使用 pandas 将数据集加载为数据框。但是,我对这种数据格式有点困惑。
这是两行数据的示例:
Name=John, Gender=M, BloodType=A, Location=New York, Age=18
Name=Mary, Gender=F, BloodType=AB, Location=Seatle, Age=30
Run Code Online (Sandbox Code Playgroud)
如何将此数据集加载到包含列(姓名、性别、血型等)的数据框中?
如果有人给我一些入门建议,我将不胜感激!
使用 OpenCSV 解析无BOM 的 UTF-8 文档会导致第一列无法读取。提供相同的文档内容作为输入,但使用BOM 以 UTF-8 编码可以正常工作。
我专门将字符集设置为UTF-8
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
reader = new BufferedReader(inputStreamReader);
HeaderColumnNameMappingStrategy<Bean> ms = new HeaderColumnNameMappingStrategy<Bean>();
ms.setType(Bean.class);
CsvToBean<Bean> csvToBean = new CsvToBeanBuilder<Bean>(reader).withType(Bean.class).withMappingStrategy(ms)
.withSeparator(';').build();
csvToBean.parse();
Run Code Online (Sandbox Code Playgroud)
我创建了一个示例项目,可以在其中重现问题: https ://github.com/dajoropo/csv2beanSample
运行单元测试,您可以看到不带 BOM 的 UTF-8 文件如何失败,而带 BOM 的文件如何正常工作。
错误出现在第二个断言中,因为未读取第一列。结果是:
[Bean [a= null , b=第二个, c=第三]]
有什么提示吗?
我想知道是否有一种方法可以读取包含已知和未知列的 csv 文件。
例如,第一个 csv 文件中的列是: id、名字、姓氏、城市、国家/地区未知列是城市和国家/地区
第二个 csv 文件是:
id、名字、姓氏、电话号码未知列是电话号码
我想要解析的对象是:
public class Person {
Long id;
String firstname;
String lastname;
Map<String,String> additionalInfo;
}
Run Code Online (Sandbox Code Playgroud)
extraInfo 映射将包含“未知”列作为键,值将是该列中的行值。
有任何想法吗?
谢谢。
我正在使用HeaderColumnNameMappingStrategy将带有标头的csv文件映射到JavaBean.字符串值解析正常,但csv中的任何"true"或"false"值都不映射到JavaBean,我从PropertyDescriptor获得以下异常:
java.lang.IllegalArgumentException: argument type mismatch
Run Code Online (Sandbox Code Playgroud)
它出现的代码在CsvToBean第64行:
protected T processLine(MappingStrategy<T> mapper, String[] line) throws
IllegalAccessException, InvocationTargetException, InstantiationException, IntrospectionException {
T bean = mapper.createBean();
for(int col = 0; col < line.length; col++) {
String value = line[col];
PropertyDescriptor prop = mapper.findDescriptor(col);
if (null != prop) {
Object obj = convertValue(value, prop);
// this is where exception is thrown for a "true" value in csv
prop.getWriteMethod().invoke(bean, new Object[] {obj});
}
}
return bean;
}
protected PropertyEditor getPropertyEditor(PropertyDescriptor desc) throws
InstantiationException, IllegalAccessException {
Class<?> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个小应用程序,它读取csv文件并将内容显示到JList中.
我目前的问题是new FileReader(file)代码一直给我一个java.io.FileNotFoundException错误,我不太清楚为什么.
loadFile.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File("~/"));
if (fileChooser.showOpenDialog(instance) == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
CSVReader reader = new CSVReader(new FileReader(file.getAbsolutePath()));
fileLocation.setText(file.getAbsolutePath());
}
}
});
Run Code Online (Sandbox Code Playgroud) 我想弄清楚如何创建一个脚本来计算文件的标准偏差。例如,假设我 DLed 一个带有值列表的 csv。我想通过运行 python 程序来找到这些值的 SD。我们这里没有使用 numpy!
我有一个Eclipse项目,我将库"OpenCSV"作为外部JAR导入.该库现在显示在我的项目"参考库"下.
但是,当我打电话时:
CSVReader reader = new CSVReader(new FileReader(csvPath));
Run Code Online (Sandbox Code Playgroud)
Eclipse抛出一个错误,指出没有定义构造函数CSVReader.csvPath的类型为String.
有什么想法吗?
编辑:截图

想象一下你需要动态解析的一种CSV文件.
它适用于本地磁盘存储,但不适用于ram:///
<cfscript>
cfhttp(
method = "Get",
url = "http://real-chart.finance.yahoo.com/table.csv?s=YHOO&d=4&e=2&f=2016&g=d&a=3&b=12&c=2016&ignore=.csv",
//path = "C:\CFTemp",
path = "ram:///",
file = "currentCSV.csv"
);
cfdirectory(
name="files",
action="list",
directory="ram:///",
recurse="true",
type="all"
);
writeDump(files);
myfile = FileRead("ram:///currentCSV.csv");
WriteOutput("#myfile#");
fileReader = createobject("java","java.io.FileReader");
fileReader.init("ram:///currentCSV.csv"); // -ERROR
csvReader = createObject("java","com.opencsv.CSVReader");
csvReader.init(fileReader, ",");
ArrayData = csvReader.readAll();
writeDump(ArrayData);
</cfscript>
Run Code Online (Sandbox Code Playgroud)
-ERR ram:/currentCSV.csv(文件名,目录名或卷标语法不正确)
这里有什么问题?
ColdFusion 11,OpenCSV 3.7
我正在尝试使用HeaderColumnNameMappingStrategy使用opencsv读取csv文件。Opencsv每次都将我的csv第一列填充为null。这是我的代码:
实体类别:
@Entity
@Table(name = "MyEntity")
public class MyEntity {
@CsvBindByName(column = "status", required = true)
@Column(name = "status", length = 5, nullable = false)
private String status;
@CsvBindByName(column = "type", required = true)
@Column(name = "type", length = 5, nullable = false)
private String type;
@CsvBindByName(column = "percentage", required = true)
@Column(name = "percentage", nullable = false)
private Integer percentage;
@Column(name = "date", nullable = false)
@CsvBindByName(column = "date", required = true)
@CsvDate(value = "yyyy-MM-dd")
private Date date;
} …Run Code Online (Sandbox Code Playgroud) 我想用 servlet 将文件 CSV 上传到 MySQL,我有这样的代码,但我的代码出错了。
package ServToDb;
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import com.opencsv.CSVReader;
import Connection.Database;
@WebServlet("/ImportCSVtoDB")
public class ImportCSVtoDB extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImportCSVtoDB() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see …Run Code Online (Sandbox Code Playgroud) opencsv ×10
java ×5
csv ×4
python-3.x ×2
cfml ×1
coldfusion ×1
eclipse ×1
javabeans ×1
jfilechooser ×1
pandas ×1
ram ×1
reader ×1
spring ×1
statistics ×1
swing ×1
utf-8 ×1