小编use*_*331的帖子

如何删除非法字符,以便数据框可以写入Excel

我正在尝试使用ExcelWriter将数据帧写入Excel电子表格,但它一直返回错误:

openpyxl.utils.exceptions.IllegalCharacterError
Run Code Online (Sandbox Code Playgroud)

我猜测ExcelWriter不喜欢的数据框中有一些字符.这看起来很奇怪,因为数据框是由三个Excel电子表格组成的,所以我看不出Excel会不会有这样的字符!

有没有办法迭代数据框并替换ExcelWriter不喜欢的字符?我甚至不介意它只是删除它们.

什么是从数据帧中删除或替换非法字符的最佳方法?

export-to-excel pandas

15
推荐指数
5
解决办法
1万
查看次数

仅当列值为字符串时才将列值转换为小写

我在将列转换为小写时遇到了麻烦.它并不像以下那样简单:

df['my_col'] = df['my_col'].str.lower()
Run Code Online (Sandbox Code Playgroud)

因为我正在迭代很多数据帧,其中一些(但不是全部)在感兴趣的列中都有字符串和整数.如果像上面那样应用,这会导致较低的函数抛出异常:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
Run Code Online (Sandbox Code Playgroud)

我不想强迫类型成为字符串,而是评估值是否为字符串,然后 - 如果是 - 将它们转换为小写,并且 - 如果它们不是字符串 - 将它们保持原样.我认为这会奏效:

df = df.apply(lambda x: x.lower() if(isinstance(x, str)) else x)
Run Code Online (Sandbox Code Playgroud)

但它不起作用......可能是因为我忽略了一些明显的东西,但我看不出它是什么!

我的数据看起来像这样:

                          OS    Count
0          Microsoft Windows     3
1                   Mac OS X     4
2                      Linux     234
3    Don't have a preference     0
4  I prefer Windows and Unix     3
5                       Unix     2
6                        VMS     1
7         DOS or ZX Spectrum     2
Run Code Online (Sandbox Code Playgroud)

python string dataframe pandas

6
推荐指数
2
解决办法
6221
查看次数

拆分摘要数据并重新汇总

我有一个摘要df,看起来像这样:

Apples             100
Bananas            34
Kumquats           54
Greengages         101
Apples;Kumquats    5
Bananas;Greengages 7
Run Code Online (Sandbox Code Playgroud)

我想通过将组合水果的数量分成单个项目来简化它:

Apples             105
Bananas            41
Kumquats           59
Greengages         108
Run Code Online (Sandbox Code Playgroud)

即我弄掉行一样Apples;Kumquats,但增加了两个ApplesKumquats通过5

在Pandas中,有什么好方法吗?

python pandas

5
推荐指数
1
解决办法
54
查看次数

折叠Pandas数据帧中的行

我正在尝试折叠数据框中的行,该数据框包含一列ID数据和多个列,每列包含不同的字符串.它看起来像groupby是解决方案,但似乎倾向于在组上执行一些数字函数 - 我只想保留文本.这就是我所拥有的......

我有一个表格的数据框:

index    ID     apples    pears    oranges
0        101                       oranges
1        134    apples
2        576              pears
3        837    apples
4        576                       oranges
5        134              pears
Run Code Online (Sandbox Code Playgroud)

列是干净的:所以苹果列中只有文本"apples",或者它将是空白的".

如果在同一ID下有多个条目(在本例中,在ID 134和576上),我想将这些行折叠在一起以获得:

index    ID     apples    pears    oranges
0        101                       oranges
1        134    apples    pears
2        576              pears    oranges
3        837    apples
Run Code Online (Sandbox Code Playgroud)

我可以通过迭代行来做到这一点,但它似乎是一个非熊猫的解决方案.有没有更好的办法?

python-3.x pandas

4
推荐指数
2
解决办法
9995
查看次数

R中的For循环是邪恶的吗?

我听说你并不打算将程序编程风格强加到R.我发现这很难.我刚刚用for循环解决了一个问题.这是错的吗?有更好的,更"R风格"的解决方案吗?

问题:我有两列:Col1和Col2.Col1包含以自由格式输入的职务.我想使用Col2将这些职位分类收集到类别中(因此"初级技师","工程技师"和"机械技术"都被列为"技师".

我这样做了:

jobcategories<-list(
"Junior Technician|Engineering technician|Mech. tech." = "Technician",
"Manager|Senior Manager|Group manager|Pain in the ****" = "Manager",
"Admin|Administrator|Group secretary" = "Administrator")

for (currentjob in names(jobcategories)) {
  df$Col2[grep(currentjob,data$Col1)] <- jobcategories[[currentjob]]
}
Run Code Online (Sandbox Code Playgroud)

这会产生正确的结果,但我不能动摇(因为我的程序经验)我没有正确使用R的感觉.R专家可以让我摆脱困境吗?

编辑

我被问到原始数据.不幸的是,我无法提供它,因为它有机密信息.它基本上是两列.第一列仅包含400多行不同的职位(以及奇怪的个人姓名).大约有20种不同的类别可以分成这400种标题.第二列以NA开始,然后在运行for循环后填充.

loops for-loop structure r

3
推荐指数
2
解决办法
777
查看次数

更改熊猫条形图的颜色

我希望在熊猫图表中为每个柱赋予不同的颜色。根据这篇文章和类似的文章,该解决方案看起来非常简单。

当我尝试模拟解决方案时,最终所有条形都使用相同的颜色(尽管与标准颜色不同)。我想我做错了什么,但我看不出它是什么。有人看到吗?

fig = df.plot(kind='bar',    # Plot a bar chart
            legend=False,    # Turn the Legend off
            width=0.75,      # Set bar width as 75% of space available
            figsize=(8,5.8),  # Set size of plot in inches
            colormap='Paired')
Run Code Online (Sandbox Code Playgroud)

colormap='Paired'是要更改颜色的位。我得到这个: 在此处输入图片说明

很好,但是所有条形都是相同的颜色!如上所示,我正在对图进行其他更改,但它们都是文本格式或删除轴详细信息。

plot matplotlib pandas

3
推荐指数
1
解决办法
7666
查看次数

用相同的字符串替换列中的相似字符串

我有一个 Pandas 数据框,用于收集进行交易的供应商的名称。由于此数据是从银行对帐单中自动收集的,因此许多供应商都相似……但并不完全相同。总之,我想用一个名称替换供应商名称的不同排列。

我想我可以找到一种方法来做到这一点(见下文),但我是一个初学者,在我看来这是一个复杂的问题。我真的很想知道更有经验的编码人员会如何处理它。

我有一个这样的数据框(在现实生活中,它大约有 20 列,最多大约 50 行):

     Groceries            Car                Luxuries
0    Sainsburys           Texaco wst453      Amazon
1    Sainsburys bur       Texaco east        Firebox Ltd
2    Sainsbury's east     Shell wstl         Sony
3    Tesco                Shell p/stn        Sony ent nrk
4    Tescos ref 657       Texac              Amazon EU
5    Tesco 45783          Moto               Amazon marketplace
Run Code Online (Sandbox Code Playgroud)

我想找到类似的条目并将它们替换为这些条目的第一个实例,所以我最终会得到这个:

     Groceries            Car                Luxuries
0    Sainsburys           Texaco wst453      Amazon
1    Sainsburys           Texaco wst453      Firebox Ltd
2    Sainsburys           Shell wstl         Sony
3    Tesco                Shell wstl         Sony
4    Tesco                Texaco wst453      Amazon …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

1
推荐指数
1
解决办法
824
查看次数