pandas处理非结构化数据并写入CSV文件中

对于非结构化的数据类型:

示例代码:

import pandas as pd

data1 = [1, 2, 3, 4, 5]
data2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
data3 = [111, 222, 333]

df = pd.DataFrame({"单": data1, "双": data2, "三": data3})
print(df)

运行上面代码将会报下面错误:

上述问题解决方法:使用from_dict()方法,行数为key值,列数为最长的values的长度,而其他较短的values则用NaN填充。

示例代码:

import pandas as pd

data1 = [1, 2, 3, 4, 5]
data2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
data3 = [111, 222, 333]

#  使用from_dict,数据未对齐的用NaN来代替
df = pd.DataFrame.from_dict({"单": data1, "双": data2, "三": data3}, orient='index')
print(df)
print(df.T)

运行结果:

     0    1    2     3     4     5     6     7     8
单    1    2    3   4.0   5.0   NaN   NaN   NaN   NaN
双   11   22   33  44.0  55.0  66.0  77.0  88.0  99.0
三  111  222  333   NaN   NaN   NaN   NaN   NaN   NaN
     单     双      三
0  1.0  11.0  111.0
1  2.0  22.0  222.0
2  3.0  33.0  333.0
3  4.0  44.0    NaN
4  5.0  55.0    NaN
5  NaN  66.0    NaN
6  NaN  77.0    NaN
7  NaN  88.0    NaN
8  NaN  99.0    NaN

 将数据保存在csv文件中:

示例代码:

import pandas as pd

data1 = [1, 2, 3, 4, 5]
data2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
data3 = [111, 222, 333]

#  使用from_dict,数据未对齐的用NaN来代替
df = pd.DataFrame.from_dict({"单": data1, "双": data2, "三": data3}, orient='index')
print(df)
print(df.T)
#  将df数据保存在csv文件中
df.to_csv("./new_test.csv")

生成的csv文件数据:

         一般情况下这不是我们想要的数据保存形式,需要把行列转置一下,这也说明了df.T不会改变原来的df数据。

修改后的代码如下:

import pandas as pd

data1 = [1, 2, 3, 4, 5]
data2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
data3 = [111, 222, 333]

#  使用from_dict,数据未对齐的用NaN来代替
df = pd.DataFrame.from_dict({"单": data1, "双": data2, "三": data3}, orient='index')
print(df)
print(df.T)
new_df = df.T
#  将df数据保存在csv文件中
# df.T.to_csv("./new_test.csv")
new_df.to_csv("./new_test.csv")

生成的csv文件数据:

        此时生成的csv文件的格式基本上符合要求了,但是第一列出现了序列号,这一般也不是我们想要的。添加to_csv("./new_test.csv", index=False)去掉索引。

最终的示例代码:

import pandas as pd

data1 = [1, 2, 3, 4, 5]
data2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
data3 = [111, 222, 333]

#  使用from_dict,数据未对齐的用NaN来代替
df = pd.DataFrame.from_dict({"单": data1, "双": data2, "三": data3}, orient='index')
print(df)
print(df.T)
#  将df数据保存在csv文件中
df.T.to_csv("./new_test.csv", index=False)

生成的csv文件数据: 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值