Python:Pandas-数据框中的对象到字符串类型的转换

时间:2019-01-01 06:48:28

标签: python pandas dataframe type-conversion tostring

我正在尝试使用熊猫在数据框中将对象转换为字符串。 具有以下数据:

particulars
NWCLG 545627 ASDASD KJKJKJ ASDASD
TGS/ASDWWR42045645010009 2897/SDFSDFGHGWEWER
dtype:object

尝试使用 astype()[具有str,| S,| S32,| S80]类型或直接对象的详细信息列转换为字符串时>使用str函数不会转换为字符串(剩余对象),并且对于 str方法[用''代替'/''表示AttributeError: 'DataFrame' object has no attribute 'str'

使用熊猫0.23.4

另引荐:https://github.com/pandas-dev/pandas/issues/18796

3 个答案:

答案 0 :(得分:0)

您可以使用:

import React from "react";
import ReactDOM from "react-dom";
import MUIDataTable from "mui-datatables";
import TableRow from "@material-ui/core/TableRow";
import TableCell from "@material-ui/core/TableCell";

class App extends React.Component {
  render() {
    const columns = ["Name", "Title", "Location", "Age", "Salary"];

    const data = [
      ["Gabby George", "Business Analyst", "Minneapolis", 30, "$100,000"],
      ["Aiden Lloyd", "Business Consultant", "Dallas", 55, "$200,000"],
      ["Jaden Collins", "Attorney", "Santa Ana", 27, "$500,000"],
      ["Franky Rees", "Business Analyst", "St. Petersburg", 22, "$50,000"],
      ["Aaren Rose", "Business Consultant", "Toledo", 28, "$75,000"],
      [
        "Blake Duncan",
        "Business Management Analyst",
        "San Diego",
        65,
        "$94,000"
      ],
      ["Frankie Parry", "Agency Legal Counsel", "Jacksonville", 71, "$210,000"],
      ["Lane Wilson", "Commercial Specialist", "Omaha", 19, "$65,000"],
      ["Robin Duncan", "Business Analyst", "Los Angeles", 20, "$77,000"],
      ["Mel Brooks", "Business Consultant", "Oklahoma City", 37, "$135,000"],
      ["Harper White", "Attorney", "Pittsburgh", 52, "$420,000"],
      ["Kris Humphrey", "Agency Legal Counsel", "Laredo", 30, "$150,000"],
      ["Frankie Long", "Industrial Analyst", "Austin", 31, "$170,000"],
      ["Brynn Robbins", "Business Analyst", "Norfolk", 22, "$90,000"],
      ["Justice Mann", "Business Consultant", "Chicago", 24, "$133,000"],
      [
        "Addison Navarro",
        "Business Management Analyst",
        "New York",
        50,
        "$295,000"
      ],
      ["Jesse Welch", "Agency Legal Counsel", "Seattle", 28, "$200,000"],
      ["Eli Mejia", "Commercial Specialist", "Long Beach", 65, "$400,000"],
      ["Gene Leblanc", "Industrial Analyst", "Hartford", 34, "$110,000"],
      ["Danny Leon", "Computer Scientist", "Newark", 60, "$220,000"],
      ["Lane Lee", "Corporate Counselor", "Cincinnati", 52, "$180,000"],
      ["Jesse Hall", "Business Analyst", "Baltimore", 44, "$99,000"],
      ["Danni Hudson", "Agency Legal Counsel", "Tampa", 37, "$90,000"],
      ["Terry Macdonald", "Commercial Specialist", "Miami", 39, "$140,000"],
      ["Justice Mccarthy", "Attorney", "Tucson", 26, "$330,000"],
      ["Silver Carey", "Computer Scientist", "Memphis", 47, "$250,000"],
      ["Franky Miles", "Industrial Analyst", "Buffalo", 49, "$190,000"],
      ["Glen Nixon", "Corporate Counselor", "Arlington", 44, "$80,000"],
      [
        "Gabby Strickland",
        "Business Process Consultant",
        "Scottsdale",
        26,
        "$45,000"
      ],
      ["Mason Ray", "Computer Scientist", "San Francisco", 39, "$142,000"]
    ];

    const options = {
      filterType: "dropdown",
      responsive: "scroll",
      selectableRows : true,
      renderExpandableRow: (rowData, rowMeta) => {
        console.log(rowData, rowMeta);
        return (
          <TableRow>
            <TableCell colSpan={rowData.length}>
              Custom expandable row option. Data: {JSON.stringify(rowData)}
            </TableCell>
          </TableRow>
        );
      }
    };

    return (
      <MUIDataTable
        title={"ACME Employee list"}
        data={data}
        columns={columns}
        options={options}
      />
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));

或者:

df['particulars'] = df['particulars'].astype('|S')

然后使用下面的df['particulars'] = df['particulars'].astype(str) 属性,即使在您遇到的情况下也可以使用,只是您以错误的方式访问它,您只能将其访问到列(str es):

Series

那么现在:

df['particulars'] = df['particulars'].str.replace('/',' ')

将是理想的结果。

编辑:

我意识到您可以在下面编写完整的代码,因为print(df) 代表object

str

答案 1 :(得分:0)

您可以阅读将dtype指定为str的excel:

df = pd.read_excel("Excelfile.xlsx", dtype=str)

然后particulars列中使用字符串替换,如下所示:

df['particulars'] = df[df['particulars'].str.replace('/','')]

请注意,df分配也是“ []”括号中的数据框。

在程序中使用以下命令时,它返回一个字符串,您正尝试将其分配给数据框列。因此是错误。

df['particulars'] = df['particulars'].str.replace('/',' ')

答案 2 :(得分:0)

我希望我能看到整个数据框。话虽如此,您是否尝试过使用下面的代码?

df.particulars = df.particulars.apply(lambda x: str(x))