我想将表格(表示为列表列表)转换为Pandas DataFrame.作为一个极其简化的例子:
a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)
将列转换为适当类型的最佳方法是什么,在这种情况下,将第2列和第3列转换为浮点数?有没有办法在转换为DataFrame时指定类型?或者最好先创建DataFrame,然后循环遍历列以更改每列的类型?理想情况下,我想以动态方式执行此操作,因为可能有数百列,我不想确切地指定哪些列属于哪种类型.我可以保证的是,每列包含相同类型的值.
我的问题与此非常相似,但我需要转换整个数据帧而不仅仅是一系列.该to_numeric函数一次只能在一个系列上运行,并且不能替代已弃用的convert_objects命令.有没有办法convert_objects(convert_numeric=True)在新的pandas版本中获得与命令类似的结果?
谢谢MikeMüller的例子.df.apply(pd.to_numeric)如果值都可以转换为整数,则效果很好.如果在我的数据框中我有无法转换为整数的字符串怎么办?例:
df = pd.DataFrame({'ints': ['3', '5'], 'Words': ['Kobe', 'Bryant']})
df.dtypes
Out[59]:
Words object
ints object
dtype: object
Run Code Online (Sandbox Code Playgroud)
然后我可以运行已弃用的函数并获取:
df = df.convert_objects(convert_numeric=True)
df.dtypes
Out[60]:
Words object
ints int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
运行该apply命令会给我带来错误,即使是尝试和处理也是如此.
当我尝试绘制一个seaborn热图时,我收到错误
TypeError:输入类型不支持ufunc'isnan',根据强制转换规则''safe',输入无法安全地强制转换为任何支持的类型
我的代码如下
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_table(r"C:\Results.CST", sep='\s+',header=11, engine = 'python')
df2 = cridim[['Bottom','Location_X','Location_Y',]] # Bottom , location X and Location Y are my column labels
df3 = df2.pivot('Location_X','Location_Y','Bottom') # create pivot table for results
plt.figure(figsize=(15,15))
pivot_table = df3
plt.xlabel('X',size = 10)
plt.ylabel('Y',size = 10)
plt.title('btm CD',size = 10)
sns.heatmap(pivot_table, annot=False, fmt=".1f", linewidths = 0.5, square = True, cmap = 'RdYlBu', vmin=2900, vmax = 3500)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在我的数据由77行和77列组成,其中只有651个具有数据,其他空坐标在数据帧中表示为无
热像图可以绘制多少数据可以限制?
我不知道为什么我得到上述错误,我已将其写入csv文件,结果没问题. …